2013-04-25 2 views
0

암호화 모듈을 사용하여 node.js에서 암호화를 구현하려고합니다. 다음은 내 코드의 단편이다Node.js 암호화 모듈

내가 다시 점점되어야한다 무엇
var SECRET_KEY = "RANDOMKEY"; 
var crypto = require("crypto"); 
var MD5 = crypto.createHash("MD5"); 
MD5.update(SECRET_KEY, 'ucs2'); 
var hash = MD5.digest('binary'); 


var key = new Buffer(hash, 'binary'); 
var keyStart = new Buffer(8, 'binary'); 
key.copy(keyStart, 0, 0, 8); 


var valueToEncrypt = new Buffer('password', 'utf-8').toString('binary'); 
var cipher = crypto.createCipheriv('des-cbc',keyStart, keyStart); 
var cryptedPassword = cipher.update(valueToEncrypt, 'binary', 'base64'); 

cryptedPassword+= cipher.final('base64'); 

console.log(cryptedPassword);gives---> r4xhQ8T87z2FFkLOxkcnGg== 

내가 잘못 여기서 뭐하는 거지 정말 확실하지 않다 r4xhQ8T87z26w30I1vr9kA의 == 입니다. 어떤 도움이라도 대단히 감사합니다.

+0

예상 값은 어떻게 생성합니까? 왜 비밀 키의 처음 8 바이트 만 해시하는거야? – loganfsmyth

답변

1

암호가 올바르게 암호화되어 있으므로 암호 뒤에 "\r\n"이라는 예상 값이 포함됩니다.이 예제 코드에서는 제공하지 않습니다.

"r4xhQ8T87z2FFkLOxkcnGg==""password"으로 복호화되지만, "r4xhQ8T87z26w30I1vr9kA==""password\r\n"으로 복호화됩니다.

그런 식으로, 인코딩에 조금 미쳐 버렸습니다. 모든 것을 Buffer으로 유지하는 것이 더 간단합니다.

var SECRET_KEY = "RANDOMKEY"; 
var crypto = require("crypto"); 

var MD5 = crypto.createHash("MD5"); 
MD5.update(SECRET_KEY, 'ucs2'); 
var keyStart = MD5.digest().slice(0, 8); 

var valueToEncrypt = 'password\r\n'; 
var cipher = crypto.createCipheriv('des-cbc', keyStart, keyStart); 
var cryptedPassword = cipher.update(valueToEncrypt, 'utf8', 'base64') + 
    cipher.final('base64'); 

console.log(cryptedPassword); 
+0

고마워요.이 작품은 !! :-) 나는 여전히 인코딩으로 골목에 도착하려고 노력 중이다. – nimgrg