本教程將演示如何使用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並再次添加同樣的內容。

相關文章