我有php脚本,其中密码编码使用了 openssl:
$ key = openssl_get_publickey($ certificate);
openssl_public_encrypt($通,$ userPassCrypted,$键,OPENSSL_PKCS1_PADDING);
openssl_free_key($键);
现在我尝试用ruby
做同样的事情要求'openssl'
cert = OpenSSL :: X509 :: Certificate.new(证书)
public_key = cert.public_key
passwordSSL = public_key.public_encrypt(password,1)
这里的问题是这些密码编码不匹配
证书与公钥相同 在PHP中是:
-----开始公钥----- ... ----- END PUBLIC KEY -----
红宝石中的是:
-----开始RSA公钥----- ... ----- END RSA PUBLIC KEY -----
我猜这里是差异(键体也不一样)......
如何在Ruby中使用与PHP相同的公钥?或者是它 可能以某种方式转换RSA密钥?
或许我必须以另一种方式做到这一点?
高度赞赏任何建议。
答案 0 :(得分:0)
您可以使用以下方法打开它:
# Public key
public_key = OpenSSL::PKey::RSA.new(File.read("/path/to/public/key"))
# Private key (with password)
private_key = OpenSSL::PKey::RSA.new(File.read("/path/to/private/key), "password")
希望这有帮助!
更新:啊,好的。是的,我认为没有办法从OpenSSL输出中删除“RSA”而不用正则表达式删除它。
cert = OpenSSL::X509::Certificate.new(File.read("/path/to/x509/cert"))
cert.public_key.to_s.gsub(/RSA PUBLIC KEY-----/, "PUBLIC KEY-----")