Java使用DES加密解密

一、DES算法

DES(Data Encryption Standard):數據加密標準,它是由IBM公司研製的一種對稱密碼算法

DES是一個分組加密算法,典型的DES以64位分組對數據加密,加密和解密用的是用一個算法。

總長度64位8字節,其中8位作爲校驗碼,不參與加密算法。

二、祕鑰與加密算法

祕鑰是一種參數(它是在明文轉換爲密文或將密文轉換爲明文的算法中輸入的數據)

加密算法是明文轉換爲密文的變換函數,同樣的祕鑰可以用不同的加密算法,得到的密文就不一樣

比如凱撒密碼,就是將字母循環後移n位,這個n就是一個祕鑰,循環後移的方法叫做算法

三、DES加密流程

四、DES加密與解密

提供原始祕鑰:長度64位,8字節

    @Test
    public void testDES() throws Exception {
        // 明文
        String plainText = "abcd";
        System.out.println("明文:" + plainText);

        // 提供原始祕鑰:長度64位,8字節
        String originKey = "12345678";
        // 根據給定的字節數組構建一個祕鑰
        SecretKeySpec key = new SecretKeySpec(originKey.getBytes(), "DES");

        // 加密
        // 1.獲取加密算法工具類
        Cipher cipher = Cipher.getInstance("DES");
        // 2.對工具類對象進行初始化,
        // mode:加密/解密模式
        // key:對原始祕鑰處理之後的祕鑰
        cipher.init(Cipher.ENCRYPT_MODE, key);
        // 3.用加密工具類對象對明文進行加密
        byte[] encipherByte = cipher.doFinal(plainText.getBytes());
        // 防止亂碼,使用Base64編碼
        String encode = Base64.encodeBase64String(encipherByte);
        System.out.println("加密:" + encode);

        // 解密
        // 2.對工具類對象進行初始化
        cipher.init(Cipher.DECRYPT_MODE, key);
        // 3.用加密工具類對象對密文進行解密
        byte[] decode = Base64.decodeBase64(encode);
        byte[] decipherByte = cipher.doFinal(decode);
        String decipherText = new String(decipherByte);
        System.out.println("解密:" + decipherText);
    }

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章