2013-01-19 25 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)