RSA加密问题

时间:2011-03-15 08:27:44

标签: java rsa encryption

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

我有以下简单的代码:

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倍很多

1 个答案:

答案 0 :(得分:2)

这看起来很可疑:

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

你的意思是:

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