gpt4 book ai didi

java - RSA Hello World 程序...为什么它不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:46 26 4
gpt4 key购买 nike

我试图理解 java 中的 RSA - 但我无法弄清楚为什么这段代码不打印“Hello, World” 我试图通过生成 key 对、加密“Hello”来确保我理解正确世界”并对其进行解密。我很难弄清楚我做错了什么

import java.security.*;
import java.math.BigInteger;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import javax.crypto.spec.*;
import java.security.spec.*;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import javax.crypto.Cipher;

public class testrsa
{
public static void main(String [] args)
{
try
{
byte[] cipherData, plainData;
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(4096);
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();

Cipher cipher1 = Cipher.getInstance("RSA");
cipher1.init(Cipher.ENCRYPT_MODE, publicKey);
cipherData = cipher1.doFinal("Hello, Word".getBytes());

Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, privateKey);
plainData = cipher2.doFinal(cipherData);

System.out.print(plainData.toString());

}
catch(Exception ex)
{
System.out.print(ex.toString());
}

}
}

最佳答案

改变

System.out.print(plainData.toString());

System.out.print(new String(plainData));

你赢了!

解释

plainData,返回doFinal是一个 byte[]。您在使用 toString() 方法(类似于 [B@75589559)时看到的不是损坏的解密,而是 Java 如何实现 byte[]toString() 方法。

在我建议的代码中,您将使用您提供的字节创建一个新字符串——这会满足您的要求。

关于java - RSA Hello World 程序...为什么它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613495/

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