gpt4 book ai didi

encryption - 使用 erlang + RSA 解密字符串

转载 作者:行者123 更新时间:2023-12-02 01:16:00 25 4
gpt4 key购买 nike

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

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

如果我在我的 Erlang 代码中加密数据并解密所有内容,一切都很好。但是,我无法解密来 self 的 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 函数。

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

谢谢。

最佳答案

在深入挖掘之后,我找到了答案!我需要将我的字符串解码为 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).

希望这对其他人有帮助。

关于encryption - 使用 erlang + RSA 解密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11233872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com