2015-03-12 2 views
0

Мне нужно зашифровать (и расшифровать) строку открытым ключом, ранее сгенерированным в nodejs (я использую версию 0.12) с криптовым модулем, но я не могу это сделать.Публичное шифрование в крипто на узле 0.12

Для первого я генерироваться ключи следующим образом:

var diffHell = crypto.createDiffieHellman(60); 
diffHell.generateKeys('base64'); 
var publicKey = diffHell.getPublicKey('base64'); //or whatever 'hex','binary' 
var privateKey = diffHell.getPrivateKey('base64'); //or whatever 'hex','binary' 

Затем я попытался зашифровать строку, используя сгенерированный открытый ключ:

crypto.publicEncrypt({key: publicKey}, new Buffer(textToEncrypt)); 

Запуск этого фрагмента, узел бросить эту ошибку:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Object.exports.publicEncrypt (crypto.js:362:18) 
    [...] 

Чтение, я понимаю, что ключ должен быть в формате PEM, но я могу не найти в документации, как преобразовать открытый ключ в PEM.

Итак, как я могу это сделать? Кто-то это сделал?

ответ

1

Diffie-Hellman (Key Exchange) - это алгоритм и протокол для получения общего секрета на основе модульной арифметики. Это не шифр с открытым ключом так же, как RSA. Вы не можете использовать Диффи-Хеллмана для crypto.publicEncrypt(). Crypto модуль

Node.js' не обеспечивает способ создания пары ключей государственно-частного RSA, поэтому вам необходимо либо использовать OpenSSL через child_process или использовать один из many modules, которые обеспечивают такого рода вещи (например, ursa).

+0

Я знаю о существовании ursa, но, если возможно, я предпочитаю не использовать сторонние модули для этого сценария , Мне нужна асимметричная подписка, нет способа сделать это со стандартными библиотеками? – gdg

+0

Нет, нет –

0

Вам не нужно использовать ursa для генерации ключей. Вместо этого вы можете сгенерировать ключи с помощью openssl, а затем сохранить сгенерированные ключи PEM на своем сервере и попытаться загрузить их в свой скрипт.

Смежные вопросы