2014-01-10 2 views
0

암호를 사용하여 개인 키로 문자열에 서명하려고합니다.노드 js 암호 기호가 빈 문자열을 반환합니다.

sign 메서드는 빈 문자열을 반환하고, 서명을 얻기를 바랬습니다.

var crypto = require('crypto'); 
var message = "This is a string I want to ensure is not tampered with."; 

var diffieHellman = crypto.createDiffieHellman(1024); 
var publicKey = diffieHellman.generateKeys("base64"); 
var privateKey = diffieHellman.getPrivateKey("base64"); 

var signer = crypto.createSign('RSA-SHA256'); 
signer.write(message, "ascii", function() 
{ 
    var signature = signer.sign(privateKey, 'base64'); 

    console.log(publicKey); 
    console.log(privateKey); 
    console.log(signature);// Empty string ? 
}); 

공개 키와 개인 키가 잘 생성됩니다.

도움을 주시면 감사하겠습니다.

+0

를 작동하는지 DH! = RSA –

답변

0

이 암호화 버그가 여기를 확인할

https://github.com/joyent/node/issues/6963

이 해결 512 서명자의 비트 길이를 사용. 여기

는 문제가 코드를

var keypair = require('keypair'); 
var crypto = require('crypto'); 

var dataA = "This is a string I do not want to be tampered with"; 
var dataB = "This is a string I do want to be tampered with"; 

var pair = keypair({bits:256}); 
console.log("Private :"+pair['private']); 
console.log(" Public :"+pair['public']); 

var sign = crypto.createSign('RSA-SHA256'); 
sign.write(dataA); 
var signiture = sign.sign(pair['private'],'base64'); 

console.log("Signiture :"+signiture); 
1

sign(...)에 필요한 키는 PEM 인 코드 된 RSA 키이지만 createDiffieHellman에 의해 생성 된 키는 내가 아는 한 멀쩡합니다. 최선의 방법은 OpenSSL으로 PEM 키를 생성하는 것입니다.

+0

두 시스템은 모듈 지수에 의존하고 있지만은, DH 키 쌍은 RSA 개인 키와 동일하지 않습니다. 그들이 작동한다면, 그들은 매우 심각한 보안 문제가있을 것입니다. lib (none)에 의해 반환 된 에러의 타입은 다소 걱정된다. 동적 타이핑을 사용하는 IMHO 스크립팅 언어는 보안 관련 응용 프로그램에는 적합하지 않습니다. –

+0

@loganfsmyth node.js 암호로이 작업을 수행하는 방법을 알고 있습니까? 내가 사용해야하는 방법에 대한 몇 가지 지침. 감사. – bluelightzero

+0

@bluelightzero NodeJS에는 RSA 키 쌍 생성 기능이 포함되어 있지 않습니다. 그 이유는 아마도 NodeJS를 사용하여 RSA 키 쌍을 만드는 데 매우 오랜 시간이 걸릴 것입니다. RSA 키 쌍은 천천히 느립니다. 난수 생성도 문제가 될 수 있습니다. –