DES加密簡單封裝成工具類方式一

DES是一種對稱的加密方式,即需要相同的密鑰進行加密解密。爲了方便日後使用,此處將DES的加解密方法進行了封裝,參數和返回值統一String數據類型。代碼較爲簡單,不多解釋,如有不對的地方,望多多指教。

package encrypt;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import org.apache.commons.codec.binary.Base64;

public class MyDesUtil {

    //密鑰
    private final static String SECRET_KEY = "aaaaaaaa";
    //要加密的內容
    private static String content = "rootroofdsft";
    
    public static void main(String[] args) {
        System.out.println("=======原文=====");
        System.out.println(content);
        String encryptStr = encrypt(content, SECRET_KEY);
        System.out.println("=======加密密文=====");
        System.out.print(encryptStr);
        String decryptStr = decrypt(encryptStr, SECRET_KEY);
        System.out.println("=======解密=====");
        System.out.println(decryptStr);
    }
        /**
     *
     * @param content 要加密內容
     * @param secretKey 密鑰
     * @return  密文,字符串
     */
    public static  String encrypt(String content,String secretKey) {
                try {
            //將String 轉化爲 byte 數組
            byte[] contentByte = content.getBytes();
            byte[] secretKeyByte = secretKey.getBytes();           
            DESKeySpec keySpec=new DESKeySpec(secretKeyByte);
            SecretKeyFactory keyFactory=SecretKeyFactory.getInstance("DES");            
            SecretKey key=keyFactory.generateSecret(keySpec);               
            Cipher cipher=Cipher.getInstance("DES/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(keySpec.getKey()));            
            byte[] result=cipher.doFinal(contentByte);
            //將byte[] 轉化成string
            String resultStr = new Base64().encodeToString(result);
            return resultStr;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("exception:"+e.toString());
        }
        return null; 
    }
        /**
     *
     * @param content 要解密內容
     * @param secretKey 密鑰
     * @return 解密結果 ,明文
     */
    public static String decrypt(String content,String secretKey) {
        try {
            byte [] contentByte =new Base64().decodeBase64(content);
            byte [] secretKeyByte = secretKey.getBytes();
            DESKeySpec keySpec=new DESKeySpec(secretKeyByte);
            SecretKeyFactory keyFactory=SecretKeyFactory.getInstance("DES");
            SecretKey key=keyFactory.generateSecret(keySpec);
            Cipher cipher=Cipher.getInstance("DES/CBC/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(secretKeyByte));
            byte[] result=cipher.doFinal(contentByte);
            String resultStr = new String (result);
            return resultStr;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("exception:"+e.toString());
        }
        return null;
    }   
}

測試結果如下:

參考: https://blog.csdn.net/qq_18870023/article/details/52180768  

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