Эквивалент PHP-функции openssl_public_encrypt в Ruby

Я хотел бы получить эквивалент приведенного ниже кода на рубине:

$key = '-----BEGIN PUBLIC KEY-----
some public key
-----END PUBLIC KEY-----';

$cc_number = '4242424242424242';
openssl_public_encrypt($cc_number, $cc_number_encrypted, $key);
echo base64_encode($cc_number_encrypted);

Я пытался:

pkey = '-----BEGIN PUBLIC KEY-----
some public key
-----END PUBLIC KEY-----'

cc = '4242424242424242'
key = OpenSSL::PKey::RSA.new(pkey)
puts Base64.encode64(key.public_encrypt(cc)) 

но это не работает. Как написать этот PHP-код на Ruby?


person d3m0n    schedule 02.01.2017    source источник


Ответы (1)


Я нашел решение, вдохновленное этим вопросом: Странный \ n в строке с кодировкой base64 в Ruby.

Пришлось поменять:

puts Base64.encode64(key.public_encrypt(cc)) 

to

puts Base64.strict_encode64(key.public_encrypt(cc)) 

Как указано в документации говорит:

Этот метод соответствует RFC 4648. Перевод строки не добавляется.

person d3m0n    schedule 03.01.2017