Java已经有了Java Cryptography Extension Framework,它就是为这些东西设计的.
BouncyCastle是此框架的加密提供程序.这意味着,它为您的Java Cryptography Extension提供了加密算法的实现.
您将在java.security和javax.crypto包中找到相关的基本类
要使用公钥解密您的邮件,您可以尝试以下操作:
// Use RSA/NONE/NoPadding as algorithm and BouncyCastle as crypto provider
Cipher asymmetricCipher = Cipher.getInstance("RSA/NONE/NoPadding", "BC");
// asume, that publicKeyBytes contains a byte array representing
// your public key
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory;
keyFactory = KeyFactory.getInstance(publicKeySpec.getFormat());
Key key = keyFactory.generatePublic(publicKeySpec);
// initialize your cipher
asymmetricCipher.init(Cipher.DECRYPT_MODE, key);
// asuming, cipherText is a byte array containing your encrypted message
byte[] plainText = asymmetricCipher.doFinal(cipherText);
请注意,这个示例非常基本,缺少几个try catch块.此外,您不应使用不带填充的非对称密码,因为这会使您容易受到重放攻击.您可能还会遇到密钥长度问题.在某些Java包中,限制了允许的最大密钥长度.这可以通过使用无限强度策略文件来解决.
我希望,这可以帮助您开始使用Java加密技术.