本教程将演示如何使用Java加密扩展(JCE)在Java中进行加密和解密。 对称密钥和非对称密钥是密码系统的两种基本类型。 它们也被称为“密钥”和“公钥”密码术。

Java的成功因素之一归因于它为平台和应用程序提供的强大安全性。 这是我即将撰写的关于Java安全性系列教程的第一部分。 在本教程中,我们将看到一个关于在JCE中使用“密钥”加密的简单示例。

安全性及其实现是程序员的难题之一。我会写基本的东西,并且一如既往JavaPapers焦点小组是初学者和中间人。所以不要远离这个系列,有很多有趣的事情要学习。

对称密钥加密

对称(秘密)密钥使用相同的密钥进行加密和解密。这种类型的密码学的主要挑战是双方发送者和接收者之间交换密钥。

在下面的例子中,我们将使用作为JCE SunJCE提供者的一部分的加密和解密算法。

对称密钥Java加密解密示例

以下示例使用对称密钥进行加密和解密。 “数据加密标准(DES)”是一种流行的对称密钥算法。目前DES已经过时。 DESede是一个三重DES和一个更强大的DES变体。添加安全提供程序。我们正在使用JDK提供的SunJCE Provider。生成密钥。使用KeyGenerator和算法来生成密钥。我们正在使用DESede。还有其他算法,如河豚。编码文本。为了实现跨平台的一致性,使用UTF-8编码将纯文本编码为字节。加密文本。使用ENCRYPT_MODE实例化密码,使用密钥并加密字节。解密文本。使用DECRYPT_MODE实例化密码,使用相同的密钥并解密字节。

AES是DES上的最新加密标准。您可以使用JCE教程参考加密解密与AES对称算法。以上所有步骤和概念都是相同的,我们只需用AES替换DES即可。

输出:Plain Text Before Encryption: Java Cryptography ExtensionEncrypted Text After Encryption: ???E"????&?\??W]©?????}}"Decrypted Text After Decryption: Java Cryptography Extension

访问限制错误

我使用Java SE 8和Eclipse来运行上述程序。 在Pre Java 1.4中,您需要明确添加SunJCE提供程序,并且您可能会收到以下编译错误,

“访问限制:构造函数SunJCE()由于对所需库C:\ Program Files \ Java \ jdk1.8.0 \ jre \ lib \ ext \ sunjce_provider.jar的限制而无法访问”

要解决这个问题,请删除JRE系统库并重新添加。 通过Project Properties转到“Java Build Path”,然后在Libraries选项卡下,删除JRE System Library并再次添加同样的内容。

相关文章