Encryption 使用erlang+;解密字符串;RSA

Encryption 使用erlang+;解密字符串;RSA,encryption,erlang,rsa,Encryption,Erlang,Rsa,我有两个独立的应用程序,一个用Java编写,另一个用Erlang编写。 两个应用程序都以字符串格式相互发送消息,这些消息在Java应用程序中加密,需要在Erlang应用程序中解密 问题是: 我正在使用RSA公钥/私钥进行加密/解密 如果我加密数据并解密MyErlang代码中的所有内容,那么一切都很好。但是,我无法解密来自java端点的字符串 我正在做一个简单的测试: PrivKey = "-----BEGIN RSA PRIVATE KEY----- ...", % Data is the st

我有两个独立的应用程序,一个用Java编写,另一个用Erlang编写。 两个应用程序都以字符串格式相互发送消息,这些消息在Java应用程序中加密,需要在Erlang应用程序中解密

问题是: 我正在使用RSA公钥/私钥进行加密/解密

如果我加密数据并解密MyErlang代码中的所有内容,那么一切都很好。但是,我无法解密来自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的格式,但我找不到任何地方说明如何对字符串进行编码以传递给解密_私有函数

有人知道怎么做吗?这看起来很简单,但我花了很多时间来弄清楚


谢谢。

再挖一点,我找到了答案! 我需要将我的字符串解码成base64二进制

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 = base64:decode(Data), %<-- THIS IS THE MAGIC

public_key:decrypt_private(BinData, Priv).
PrivKey=“----开始RSA私钥------…”,
%Data是我从Java收到的字符串
Data=“s013aA/SGN2IGYEBIEXXKVJIIPQISRVFEDNEL8NPRGHTHXTNYZESZVFCF463HPZYO5AOOZISU7PWDDGKXGY8AQYZC+a3uES5muTb2RrzJ17yYku+g4S44vgIwZ9EyustZafNVGEYfgbWOYaPP/q5k683uR+MRHVqp6UbqMok=”,
[PrivEntry]=公钥:pem_解码(列表到二进制(PrivKey)),
Priv=公钥:pem\U入口解码(PrivEntry),
BinData=base64:解码(数据),%