Mã sau hoạt động, nhưng tôi không phải là chuyên gia mật mã chuyên nghiệp, vì vậy một số nhận xét ở đây sẽ hữu ích.
Tôi đã sử dụng mô-đun RSA ursa, thay vì mật mã.
Tôi lo ngại rằng nếu dữ liệu tương tự đã được mã hóa trực tiếp, không có thông qua AES hoặc tương tự, thì có thể sẽ không quan trọng để phá vỡ điều này. Bình luận xin vui lòng ...
var ursa = require('ursa');
var fs = require('fs');
// create a pair of keys (a private key contains both keys...)
var keys = ursa.generatePrivateKey();
console.log('keys:', keys);
// reconstitute the private key from a base64 encoding
var privPem = keys.toPrivatePem('base64');
console.log('privPem:', privPem);
var priv = ursa.createPrivateKey(privPem, '', 'base64');
// make a public key, to be used for encryption
var pubPem = keys.toPublicPem('base64');
console.log('pubPem:', pubPem);
var pub = ursa.createPublicKey(pubPem, 'base64');
// encrypt, with the public key, then decrypt with the private
var data = new Buffer('hello world');
console.log('data:', data);
var enc = pub.encrypt(data);
console.log('enc:', enc);
var unenc = priv.decrypt(enc);
console.log('unenc:', unenc);
Sau khi điều tra thêm http://en.wikipedia.org/w/index.php?title=RSA_%28cryptosystem%29§ion=12#Attacks_against_plain_RSA có vẻ như ursa đã có đệm.
Tôi không chắc chắn cách bạn sẽ cung cấp cho người dùng khóa riêng tư của họ một cách an toàn. Tôi sẽ tốt hơn nếu họ tạo ra cặp chìa khóa của họ tại địa phương và cung cấp cho bạn khóa công khai của họ. – Bruno
@Bruno vâng, không có vấn đề về nó ... mục tiêu của tôi là để hiểu làm thế nào để tạo ra một cặp chìa khóa (riêng tư, công khai) với Node.js, là điều này có thể? – Dail