java可對稱加解密---簡單的加密解密( 3DES加密 )



import org.apache.xerces.impl.dv.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.SecureRandom;

public class EncryptUtils {


    // 密鑰(DES加密和解密過程中,密鑰長度都必須是8的倍數)
    private final static String secretKey = "66666666";

    // 加解密統一使用的編碼方式
    private final static String encoding = "utf-8";

    /**
     * 3DES加密
     *
     * @param plainText 普通文本
     * @return
     * @throws Exception
     */
    public static String encode(String plainText) throws Exception {
        // DES算法要求有一個可信任的隨機數源
        SecureRandom sr = new SecureRandom();
        // 從原始密鑰數據創建DESKeySpec對象
        DESKeySpec dks = new DESKeySpec(secretKey.getBytes());
        // 創建一個密匙工廠,然後用它把DESKeySpec轉換成
        // 一個SecretKey對象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//DES加密和解密過程中,密鑰長度都必須是8的倍數
        SecretKey secretKey = keyFactory.generateSecret(dks);
        // using DES in ECB mode
        Cipher cipher = Cipher.getInstance("DES/ECB/pkcs5padding");
        // 用密匙初始化Cipher對象
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
        // 執行加密操作
        byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));
        return Base64.encode(encryptData);
    }

    /**
     * 3DES解密
     *
     * @param encryptText 加密文本
     * @return
     * @throws Exception
     */
    public static String decode(String encryptText) throws Exception {
        // DES算法要求有一個可信任的隨機數源
        SecureRandom sr = new SecureRandom();
        // 從原始密匙數據創建一個DESKeySpec對象
        DESKeySpec dks = new DESKeySpec(secretKey.getBytes());
        // 創建一個密匙工廠,然後用它把DESKeySpec對象轉換成
        // 一個SecretKey對象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey secretKey = keyFactory.generateSecret(dks);
        // using DES in ECB mode
        Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

        // 用密匙初始化Cipher對象
        cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);
        // 正式執行解密操作
        byte[] decryptData = cipher.doFinal(Base64.decode(encryptText));
        return new String(decryptData, encoding);
    }

   
    
}

 

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