
次のようにハッシュを暗号化する必要があります。
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
mykey.key
私に提供された公開鍵を使用してRSAアルゴリズムを使用します(例:)。どうすればいいですか?ウェブサイトで使用するように案内するのを見ていますが、openssl
どうすればいいかわかりません。
編集:私はこれを試しました
ファイルを作成し、次のようにしてハッシュをプッシュしました。
echo "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2" >file.txt
それではこれ
openssl rsautl -inkey mykey.key -pubin -encrypt -in file.txt > file.txt.enc
メモ帳で file.txt.enc を開こうとすると、次のメッセージが表示されます。
バイナリ形式の暗号文の結果が必要なため、これが暗号化に成功したかどうかはわかりません。
答え1
バイナリ形式の暗号文の結果が必要なため、これが暗号化に成功したかどうかはわかりません。
暗号化が成功したかどうかをテストしたい場合は、今すぐ復号化してプレーンテキストを回復できることを確認してください。プレーンテキストを回復できるといいでしょう。
「バイナリ形式」が実際に何を意味するのか混乱しているようです。
これ:
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
実際には16進数フォーマット-aテキスト表現バイナリ値。
システム内のすべてのファイルまたはデータブロックは最終的に一連のバイト- バイト(単純化のためにビットについて心配しないでください)は0から255の数字です。バイトは、10進数、16進数、2進数、またはバイトを処理するためにアプリケーションが実行する必要があるすべての項目として書き込みまたは表示できます。
テキストを数値、UTF-8、Unicodeなどで表現するさまざまな方法があります。
これを説明するために、バイトに変換されたテキスト文字列「2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2」は次のとおりです(10進数で表示)。
50 99 49 52 48 48 102 54 57 56 54 55 53 55 49 97
98 52 101 54 48 100 51 98 56 102 48 49 101 48 98 49
55 99 55 98 101 56 57 101 51 50 49 102 57 49 102 56
97 48 55 99 100 51 57 101 101 98 97 50 48 50 101 50
改行文字を追加します。合計65バイトまたはロケールが16ビット文字(Unicodeなど)を使用している場合は、130バイトです。 Unicodeは上記の値と同じで、各値の前に0が付きます。もちろん、テキストが表す値と同じではありません。
したがって、上記の一連のバイトは、openssl
実際の値「2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2」(非常に長い10進数)ではなく、実際に暗号化するように指示します。
したがって、上記の内容に応じて、file.txt.enc
65個または130個の任意の値があります。これがメモ帳が提示したいものです。
今あなたが望むならテキストの16進表現~のコンテンツあなたのものfile.txt.enc
- 私の考えにはこれが効果があるようです。これ):
xxd -p file | tr -d '\n'
答え2
努力する:
$ cat file.txt | openssl rsautl -encrypt -pubin -inkey mykey.key > secret.txt
cat secret.txt
}[4�Or)f���r�_
# more binary data here...
それから:
$ cat secret.txt | openssl rsautl -decrypt -inkey myprivatekey.key
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
どちらのキーもPEM形式でなければなりません。
答え3
ここでは、多くの質問に対する答え(例を含む)を見つけることができます。
https://www.madboa.com/geek/openssl/
特に、プロセスの暗号化された結果を電子メールで送信する場合は、「enc」サブコマンドの「-a」オプションを使用するか、「base64」opensslサブコマンドの別のステップとしてBase64にエンコードできます。
これにより、印刷できないバイトのバイナリファイルではなくASCIIテキスト結果が生成されます。
まず、暗号化を確認し、独自の(テスト)RSAキーファイルを生成してから(opensslも使用、上記のリンクを参照)、暗号化-(base64)エンコード-デコード-復号の「往復」を試すことをお勧めします。
自己テストRSAキー(ペア)を使用して入力したのと同じ結果を得る場合は、少なくともメカニズムが正しいと言うのが妥当です。
その後、提供されたRSAキーファイルを使用して、意図した受信者に追加のテキストを送信して「実際の」データを送信する前に、すべてが正しいことを確認できます。希望入力した質問とは異なります! (認証に暗号化を使用しない限り)