2017-05-17 3 views
5

현재 NodeJS를 사용하여 데이터를 암호화하려고합니다. createCipherrecommended이 아닌 Node API 문서를 읽었습니다.Nodejs createCipher 대 createCipheriv

crypto.createCipher()의 구현이 다이제스트 MD5 설정 알고리즘 반복 하나, 어떤 염과 OpenSSL이 기능을 사용 EVP_BytesToKey 키를 도출한다. 소금이 부족하면 사전 공격 같은 암호로 항상 동일한 키를 만듭니다. 낮은 반복 개수 및 비 암호 해시 알고리즘을 사용하면 암호 을 매우 빠르게 테스트 할 수 있습니다. 대신 의 PBKDF2 사용은 OpenSSL의 권고 라인에서

개발자가 키와 자신의 사용 crypto.pbkdf2에 IV ()과를 도출하는 것이 좋습니다 EVP_BytesToKey Cipher에 객체를 생성하는 crypto.createCipheriv() 를 사용하는 .

아직 createCipher은 데이터를 안전하게 암호화 할 수있는 확실하고 안전한 방법입니까? 이 메소드는 사용되지 않는 것으로 간주해야합니까? 잘 알고있는 공격자가 잠재적으로 데이터를 해독 할 수 있습니까?

createCipheriv을 사용하는 솔루션은 항상 보다 더 좋습니까?

다른 세부 정보 나 권장 사항은 높이 평가됩니다.

답변

-2

/createDecipheriv createCipheriv 물론 바람직 사용 예 :

const crypto = require('crypto') function encrypt(text){ var cipher = crypto.createCipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var crypted = cipher.update(text, 'utf8', 'hex') crypted += cipher.final('hex') return crypted } function decrypt(text){ var decipher = crypto.createDecipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var dec = decipher.update(text, 'hex', 'utf8') dec += decipher.final('utf8') return dec }

+1

왜 것이 바람직하다? – andrsnn

+0

iv - https://en.wikipedia.org/wiki/Initialization_vector를 나타냅니다. – IvanM