使用公共私钥加密和解密数据
使用公钥加密数据:
final Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
rsa.update(message.getBytes());
final byte[] result = rsa.doFinal();
System.out.println("Message: " + message);
System.out.println("Encrypted: " + DatatypeConverter.printHexBinary(result));
产生的输出类似于:
Message: Hello
Encrypted: 5641FBB9558ECFA9ED...
请注意,在创建 Cipher
对象时,必须指定与所使用的键类型兼容的转换。 (有关支持的转换列表,请参阅 JCA 标准算法名称 。)。对于 RSA 加密数据,message.getBytes()
长度必须小于密钥大小。请参阅此 SO 答案了解详情。
要解密数据:
final Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
rsa.update(cipherText);
final String result = new String(rsa.doFinal());
System.out.println("Decrypted: " + result);
产生以下输出:
Decrypted: Hello