私は2つの別々のアプリケーションを持っています。1つはJavaで書かれ、もう1つはErlangで書かれています。両方のアプリケーションは文字列形式で相互にメッセージを送信します。これらのメッセージはJavaアプリで暗号化されており、Erlangアプリで復号化する必要があります。
問題はこれです:暗号化/復号化を行うためにRSA公開/秘密鍵を使用しています。
データを暗号化し、Erlangコード内ですべて復号化すれば、すべて問題ありません。しかし、Javaエンドポイントからの文字列を復号化できません。
これが私が行っている簡単なテストです:
PrivKey = "-----BEGIN RSA PRIVATE KEY----- ...",
% Data is the string I receive from Java
Data = "s013aA/SGN2iGYEbEIXXKvJiipqisRVfVEDneL8npRgThTHxTnYZESzVfCF463phPZyo5aOozisU7pwDdGKXgY8aqYZC+a3uES5muTb2RrzJ17yYku+g4S44vgIwZ9EyustZafNVGEYfgbWOYaPP/q5k683uR+MRHVqp6UbqMok=",
[PrivEntry] = public_key:pem_decode(list_to_binary(PrivKey)),
Priv = public_key:pem_entry_decode(PrivEntry),
BinData = iolist_to_binary(Data),
public_key:decrypt_private(Data, Priv).
このコードを実行すると、次のようなエラーが発生します。
** exception error: decrypt_failed
問題はBinDataの形式にあると思いますが、decrypt_private関数に渡す文字列をエンコードする方法を説明している場所が見つかりませんでした。
誰かがこれを行う方法を知っていますか?これは簡単に思えますが、理解するのにかなりの時間がかかります。
ありがとう。