0

我正在使用OpenSSL::PKey::RSA來使用私鑰加密/解密一串數據。我將加密數據作爲字符串存儲在表中的一列中。使用Base64.encode64Base64.decode64,我已經獲得了此實施方案的正常工作。但是,我不想將加密數據存儲爲基本64位,我想將它作爲十六進制存儲在一個字符串中。將RSA加密數據存儲爲十六進制

我目前使用下面的存儲加密數據:

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

這導致encrypted_Data等於這樣的波紋管,容易在我的數據庫存儲的字符串。

d70db8c36d6ccbadd1cca1263ff140df24e0112f636ac9ea92c28f27e443496c 

我的問題已經出現在這個十六進制字符串改回需要解密數據的二進制字符串。我嘗試了幾種不同的方法,但都沒有效果。

解密這個十六進制字符串的最好/最簡單的方法是什麼?

回答

0

解壓縮的對面就是pack,這就是你想要把這個十六進制字符串變回二進制的東西。像這樣:

[encrypted_data].pack('H*') 

包是數組,字符串不是一個函數,所以一定要傳遞的是解壓同一陣列(「H *」)的結果,否則輸出將不一樣。

+0

這似乎把它回到二進制,但我不認爲這是正確的,因爲我得到這個錯誤:'OpenSSL :: PKey :: RSAError(填充檢查失敗)' – Jared 2012-02-22 21:03:16

相關問題