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  

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