使用RSA加密和解密字符串

时间:2014-04-06 11:12:10

标签: java encryption

我是Java Security和Crypto的新宠。下面的代码没有给我正确的解密。

另外,请告诉我使用算法制作强密钥的任何建议。

下面的代码有两种方法,一种是加密字符串,另一种是解密。

public class TestSecurityDiscussions {

        public static byte[] encryptData(KeyPair keys){

            String rawData = "Hi how are you>?";
            Cipher cipher = Cipher.getInstance("RSA");
            try {
                cipher.init(Cipher.ENCRYPT_MODE, keys.getPublic());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            byte[] encrypted = cipher.doFinal(rawData.getBytes());

            return encrypted;
        }


        public static String decryptData(byte[] encrypted,KeyPair keys) {
            Cipher cipher = Cipher.getInstance("RSA");
            try {
                cipher.init(Cipher.DECRYPT_MODE, keys.getPrivate());
            } catch (Exception e) {

                e.printStackTrace();
            }
            byte[] deycrypted = cipher.doFinal(encrypted);

            return deycrypted.toString();
        }


        public static void main(String[] args)   {
            KeyPair keys = KeyPairGenerator.getInstance("RSA").generateKeyPair();
            byte[] keydata = encryptData(keys);
            System.out.println("======>"+decryptData(keydata,keys));

        }

    }

1 个答案:

答案 0 :(得分:0)

我认为你的问题就在这一行:

return decrypted.toString();

Byte Strings将通过toString()提供内存位置。你应该这样做:

return new String(decrypted);