0

我必须加密一个特定的字段值并存储在数据库中。我已经为 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::KeyPair”的一个实例。

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

4

1 回答 1

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)
于 2013-01-19T11:57:23.857 回答