gpt4 book ai didi

java - 将文本转换为 BigInteger 时的 RSA 实现问题

转载 作者:行者123 更新时间:2023-12-01 12:06:55 26 4
gpt4 key购买 nike

我试图使用 Java 创建一个简单的 RSA 加密/解密程序。但是,加密和解密似乎不起作用。我认为问题是当我尝试将文件转换为 bigInteger 时。因为经过一些调试,我发现加密和解密的“十进制表示”是匹配的,只是从 bigInteger 到文件的转换导致了问题。

这是我在文件中读取的方式:

File file = new File(inputPath);
FileInputStream fis = new FileInputStream(file);
int fileLen = (int)(file.length());
data = new byte[fileLen];
fis.read(data);
fis.close();

我尝试将一个文件转换为大整数 (m),在此基础上执行其余的 RSA 操作 (c = m.modPow(e,n))。

BigInteger m = new BigInteger(data);

为了解密,我读取文件并将其转换为 bigInteger 并使用 m = c.modPow(d,n),然后使用以下内容构建密码:

BigInteger c = new BigInteger(data);

在这两种情况下,我都按以下方式编写 BigInteger:

output = m.toByteArray(); or c.toByteArray();
fos = new FileOutputStream(path);
fos.write(output);
fos.close();

我知道 RSA modPow 和 key 生成有效,因为如果我将 c 和 m 打印为 BigIntegers,它们会匹配,但文件不会匹配。知道为什么吗?预先非常感谢。

最佳答案

使用new BigInteger(1, data)。您生成负数,RSA 仅使用正数。

关于java - 将文本转换为 BigInteger 时的 RSA 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27527156/

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