相当于Ruby中的openssl_public_encrypt PHP函数

时间:2017-01-02 17:48:45

标签: php ruby php-openssl

我想在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)) 

但它不起作用。 如何用Ruby编写这个PHP代码?

1 个答案:

答案 0 :(得分:0)

我发现解决方案受到这个问题的启发:Strange \n in base64 encoded string in Ruby

我不得不改变:

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

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

正如documentation所说:

  

此方法符合RFC 4648.未添加任何换行符。