2013-01-19 26 views
0

我必须加密特定字段值并存储在数据库中。我已经使用Ruby的RSA加密。我能够加密并保存,但在解密时,我面临问题。我所做的如下,无法使用RSA.rb解密字符串:用于Ruby的RSA加密

key_pair = RSA::KeyPair.generate(512) 

将key_pair存储在单独的列中。

ciphertext = key_pair.encrypt("Hello, world!") 

将密文存储在同一表的另一列中。

虽然解密,我拿来从数据库中key_pair值和施加解密函数

plaintext = key_pair.decrypt(ciphertext) 

此步骤抛出错误

NoMethodError: undefined method `decrypt' for <String:0xa431b88> 

因为“key_pair”不是RSA的”一个实例::密钥对”。

当我尝试解密存储的值时,我从数据库中获取key_pair值,然后在其上应用解密方法。所以key_pair的值有String类。我需要一种解决方法。请指导我。

+0

你已经收到来自DB密钥对,但不是对象,它是RSA密钥对::的一个实例,并且有一个'decrypt'方法 – ted

回答

0

解密之前,请尝试:

# get persisted value from DB; then 
key_pair = RSA::KeyPair.new(your private key, your public key) 

# and then decrypt 
plaintext = key_pair.decrypt(ciphertext)