将RSA加密数据存储为十六进制

时间:2012-02-22 19:13:51

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 openssl

我使用OpenSSL::PKey::RSA使用私钥加密/解密数据字符串。我将加密数据作为字符串存储在表中的列中。我使用Base64.encode64Base64.decode64使这个实现工作没问题。但是,我不想将加密数据存储为base 64,我想将其存储为字符串中的十六进制。

我目前正在使用以下内容存储加密数据:

    encrypted_data = pk.private_encrypt(plain_data).unpack('H*').first

这会导致encrypted_Data等同于下面的字符串,它很容易存储在我的数据库中。

   d70db8c36d6ccbadd1cca1263ff140df24e0112f636ac9ea92c28f27e443496c

我的问题在于将此十六进制字符串更改回解密数据所需的二进制字符串。我尝试了几种不同的方法,但似乎都没有。

解密此十六进制字符串的最佳/最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

与unpack相反的是pack,这是你想要将这个十六进制字符串恢复为二进制的。像这样:

[encrypted_data].pack('H*')

Pack是数组上的函数,而不是字符串,所以请确保传递的是解包('H *')导致的相同数组,否则输出将不相同。