Я хочу зашифровать некоторые данные в приложении Ruby, а затем декодировать их в nodejs приложение. Я пытался заставить это работать, и теперь я просто пытаюсь зашифровать один и тот же фрагмент данных на обоих языках, чтобы получить тот же результат, но я не могу этого сделать.
//js
var crypto = require('crypto');
var key = crypto.createHash('sha1').update('key').digest('hex');
console.log(key); // a62f2225bf70bfaccbc7f1ef2a397836717377de
var encrypted = "";
var cipher = crypto.createCipher('bf-cbc', key);
encrypted += cipher.update('text');
encrypted += cipher.final('hex');
console.log(encrypted); //outputs 4eafd5542875bd3c
Похоже, я получаю шестнадцатеричная строка из кодировки.
#ruby
require 'openssl'
require 'digest/sha1'
c = OpenSSL::Cipher::Cipher.new("bf-cbc")
c.encrypt
# your pass is what is used to encrypt/decrypt
c.key = key = Digest::SHA1.hexdigest("key")
p key # a62f2225bf70bfaccbc7f1ef2a397836717377de
e = c.update("text")
e << c.final
p e # 皋?;??
Есть ли какая-то проблема с кодировкой, которую мне не хватает. Я попытался декодировать e с помощью base64, но это не дало того же результата, что и приложение узла. Есть указатели?
ОБНОВЛЕНИЕ: Так что это так близко, как друг, и я могу получить: https://gist.github.com/a880ea13d3b65a21a99d . Шиш, я просто хочу зашифровать что-то в рубине и расшифровать его в узле.
UPDATE2: Хорошо, код в этом выпуске дает мне много полезного: https://github.com/joyent/ узел / вопросы / 1395