RSA加密问题

发布于 2024-10-22 16:41:13 字数 870 浏览 2 评论 0原文

基本上,我试图在 Java 客户端和 ac# 服务器之间建立加密的数据流。 在深入研究多平台加密工作之前,我正在尝试制作一个简单的加密应用程序,但我一开始就陷入困境。

我有以下简单的代码:

String text = "hello";
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048);
        KeyPair kp = kpg.genKeyPair();
        Key publicKey = kp.getPublic();
        Key privateKey = kp.getPrivate();

        Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] cipherData = cipher.doFinal(text.getBytes());

        cipher = Cipher.getInstance("RSA/ECB/NoPadding");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] textData = cipher.doFinal(text.getBytes());

        String decrypted = new String(textData);
        System.out.println(decrypted);

没有抛出异常,但解密后我没有得到原始的“hello”文本。 有什么想法吗? 10倍很多

Basically, I'm trying to have an encrypted data flow between Java client and a c# server.
Before jumping into the deep water of having a multi platform encryption working, I'm trying to make a simple encryption app but I'm stuck at the very beginning.

I have the following simple code:

String text = "hello";
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048);
        KeyPair kp = kpg.genKeyPair();
        Key publicKey = kp.getPublic();
        Key privateKey = kp.getPrivate();

        Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] cipherData = cipher.doFinal(text.getBytes());

        cipher = Cipher.getInstance("RSA/ECB/NoPadding");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] textData = cipher.doFinal(text.getBytes());

        String decrypted = new String(textData);
        System.out.println(decrypted);

No exception is thrown but I don't get the original "hello" text after the decryption.
Any ideas?
10x a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余罪 2024-10-29 16:41:13

这看起来很可疑:

byte[] textData = cipher.doFinal(text.getBytes());

您的意思是:

byte[] textData = cipher.doFinal(cipherData);

This looks fishy:

byte[] textData = cipher.doFinal(text.getBytes());

Did you mean:

byte[] textData = cipher.doFinal(cipherData);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文