[컴][nodejs] nodejs 의 crypto module 사용시 주의점



nodejs 의 crypto module 사용시 주의점

nodejs version 과 openssl


대략적으로 NodeJS 는 자체적으로 OpenSSL 을 포함하고 있다.(code)

아래 링크를 가면, nodejs version 에 따른 openssl 버전을 확인할 수 있다.

crypto module 사용시 주의점

How to use the crypto module | Node.js 를 보면 crypto 모듈은 openssl 를 이용한다. 그래서 openssl version 의 특별한 변화가 생기면, nodejs 의 openssl 도 영향을 받는다.

md5 --> sha256,  openssl version 1.1.0

openssl version 이 1.1.0 으로 올라가면서 기본 digest algorithm 이 md5 에서 sha256 으로 변경됐다.

nodejs 에서 openssl version 을 1.1.x 로 옮긴 것은 nodejs 의 version 이 10.0.0 이 된 순간이다.(참고)

그러므로, v10 미만을 사용할 때와 v10 이상을 사용할 때 만약 crypto module 을 사용하고 있다면 주의가 필요하다.

error

OpenSSL 1.0.x 버전에서 얻은 값을 OpenSSL 1.1.x 로 decrypt 를 시도하면 아래와 같은 error 가 발생한다.

error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

알고리즘 선택

아래 처럼 algorithm 을 명시해주는 것이 나을 수 있다.
var cryptoKey = crypto.createHash('sha256').update(key).digest();



댓글 없음:

댓글 쓰기