0

OpenSSL::PKey::RSAを使用して、秘密鍵を使用してデータ文字列を暗号化/復号化しています。暗号化されたデータをテーブルの列に文字列として格納しています。私はBase64.encode64Base64.decode64を使って問題なく動作するように実装しました。しかし、暗号化されたデータをベース64として保存したくないので、文字列に16進数として格納したいと思います。私は現在、暗号化されたデータを保存するために、次を使用していRSA暗号化データを16進数で保存する

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

これは、簡単に自分のデータベースに格納する怒鳴る、のような文字列に等しいencrypted_Dataになります。

d70db8c36d6ccbadd1cca1263ff140df24e0112f636ac9ea92c28f27e443496c 

私の問題は、この16進文字列をデータの復号化に必要なバイナリ文字列に戻すことになりました。私はいくつかの異なるアプローチを試してきましたが、うまくいかないようです。

この16進文字列を復号化する最も簡単な方法は何ですか?

答えて

0

unpackの逆はpackです。これは、この16進文字列をバイナリに戻すために探しているものです。これと同じように:出力のか、他

[encrypted_data].pack('H*') 

パックは、あなたが(「H *を」)解凍同じ配列を渡していることを確認し、配列ではなく、文字列の関数である結果は同じではありません。

+0

これはバイナリに戻っているようですが、私はこのエラーが発生したので正しいとは思いません: 'OpenSSL :: PKey :: RSAError(パディングチェック失敗)' – Jared