Ruby RSA gem 产生的 public key

lulalala · 2013年07月23日 · 最后由 luikore 回复于 2013年07月23日 · 3650 次阅读

尝试理解加密的使用法,我知道我可以用 rsa gem 来产生公钥与私钥:

require 'rsa'
key_pair = RSA::KeyPair.generate(128)
public_key = key_pair.public

不过这个公钥不是如同一般使用 openssl 产生的如同乱码一样的字串,而是两个数字如:

#<RSA::Key:0x007f962280a740 @modulus=219744637617456496499369135218757178607, @exponent=65537, @options={}>

我不知道要怎样把这送给远方的 Android 使用。请问要怎样从这取得我熟悉的那种公钥/我有什么盲点吗?

没用过, 有 to_der 或者 to_pem 方法吗?

openssl 的话

OpenSSL::PKey::RSA.generate(256).public_key.to_pem

就可以了

@luikore 谢谢,没有类似的方法,所以 rsa gem 应该是很底层的东西。 而一般熟悉的公钥更抽象一层,由 openssl 外包好那两组数字的啰。

#3 楼 @lulalala

是的, pem 是 der base64 出来的, 里面按 ASN.1 的结构保存算法, key 类型和数字

key_pair.to_openssl.public_key.to_pem

刚看了下 rsa gem, 除非你装不上 openssl, 否则没必要用...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号