DES加密

java代碼示例:
/*
 *       key : 密鑰Key,key的長度必須大於等於 3*8 = 24 位哈
 *       iv : 初始化向量,增強隨機性,長度一般爲8的倍數位
 *       str : 需要加解密的字符串
 *       cipherType : 實例化Cipher對象類型, "DESede/CBC/PKCS5Padding" 加密算法名稱/分組加密模式/分組的填充方式
 *       keySpex : 實例化密鑰生成類型 ,"DESede" 爲3DES算法
 * */
private String encrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception {
    Cipher cipher = initCipher(Cipher.ENCRYPT_MODE,key,iv,cipherType,keySpec);
    // 加密結果的byte數組使用Base64轉換爲字符串
    return (new BASE64Encoder()).encode(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8)));
}

private String decrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception {
    Cipher cipher = initCipher(Cipher.DECRYPT_MODE,key,iv,cipherType,keySpec);
    return new String(cipher.doFinal((new BASE64Decoder()).decodeBuffer(str)));
}

public static Cipher initCipher(int type, byte[] key, byte[] iv, String cipherType,String keySpec) {
    try {
        SecureRandom sr = new SecureRandom(); 
        DESedeKeySpec dks = new DESedeKeySpec(key);// 生成24位密鑰
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(keySpec);// 實例化密鑰生成器
        SecretKey secureKey = keyFactory.generateSecret(dks);
        IvParameterSpec ips = new IvParameterSpec(iv);
        Cipher cipher = Cipher.getInstance(cipherType);
        cipher.init(type, secureKey, ips, sr);
        return cipher;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
發佈了7 篇原創文章 · 獲贊 5 · 訪問量 5027
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章