2016-05-17 4 views
0

Я пытаюсь сделать эквивалент функции php seal. У меня есть строка для шифрования, открытый ключ и случайно сгенерированный секретный ключ, и мне нужно кодировать строку с использованием алгоритма «rs4».Node encrypt with public certificate

До сих пор мне удалось закодировать строку с криптографическими функциями:

var password = crypto.randomBytes(128); 
var cipher = crypto.createCipher('rc4', password); 
var crypted = cipher.update(text,'utf8','base64'); 
crypted += cipher.final('base64'); 

Но как-то, мне нужно включить в шифровании сертификат открытого x509.

Может кто-нибудь указать мне в правильном направлении?

+0

Вы используете только один открытый ключ? Если это так, попытка повторить функцию печати PHP не то, что вы хотите. Вы ищете простой [шифрование с открытым ключом] (https://www.google.com/search ? q = node.js + public + key + encryption) .Если у вас есть более одного открытого ключа, страница руководства, на которую вы ссылаетесь в своем вопросе, сообщает вам, что именно происходит. Если вы не можете найти функцию в node.js что делает это именно так, вы всегда можете написать свой собственный. – Mike

+0

Да, у меня есть только один открытый ключ. Я последую за советом и попробую узел ursa. Thx! – Petru

ответ

0

В конце концов, я не нашел способа добиться такого же шифрования в узле, поэтому я просто вызвал скрипт php cli из узла, который отправил данные для шифрования, и прочитал stdout для зашифрованного результата base64: (

0

RC4 не является системой шифрования с открытым ключом. Вы ищете (в порядке предпочтения):

  • узла натрий
  • RSAES-OAEP с MGF1 + SHA256 и е = 65537

Кроме того, для секретного ключа шифрования, дон Не используйте RC4.

+0

Согласно документации php для opensssl_seal, это открытый ключ и метод случайного частного ключа. Для дешифрования данных необходимы оба ключа + закрытый ключ открытого ключа. (Похоже на diffie hellman?) – Petru

+0

https://paragonie.com/white-paper/2015-secure-php-data-encryption#crypto-seal –