Android中DES字符串加密解密

import android.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class DESUtils {
    //初始化向量,随意填写
    private static byte[]iv={1,2,3,4,5,6,7,8};
    public static String KEY = "12345678";
    /**
     *
     * @param encryptString 明文
     * @param encryptKey 密钥  D848BEDE
     * @return 加密后的密文
     */
    public static String encryptDES(String encryptString,String encryptKey){
        try {
            byte[] bytes = encryptKey.getBytes();
            //实例化IvParameterSpec对象,使用指定的初始化向量
            IvParameterSpec zeroIv=new IvParameterSpec(bytes);//iv
            //实例化SecretKeySpec,根据传入的密钥获得字节数组来构造SecretKeySpec
            SecretKeySpec key =new SecretKeySpec(bytes,"DES");
            //创建密码器
            Cipher cipher=Cipher.getInstance("DES/CBC/PKCS7Padding");//PKCS5Padding
            //用密钥初始化Cipher对象
            cipher.init(Cipher.ENCRYPT_MODE,key,zeroIv);
            //执行加密操作
            byte[]encryptedData=cipher.doFinal(encryptString.getBytes());
            return Base64.encodeToString(encryptedData,0);
        } catch (Exception e) {
            System.out.println("DESUtils::encryptDES:"+e.fillInStackTrace());
        }
        return null;
    }

    /**
     * 解密的过程与加密的过程大致相同
     * @param decryptString 密文
     * @param decryptKey 密钥
     * @return  返回明文
     */
    public static String decryptDES(String decryptString,String decryptKey){
        try {
            byte[] bytes = decryptKey.getBytes();
            //先使用Base64解密
            byte[]byteMi=Base64.decode(decryptString,0);
            //实例化IvParameterSpec对象使用指定的初始化向量
            IvParameterSpec zeroIv=new IvParameterSpec(bytes);
            //实例化SecretKeySpec,根据传入的密钥获得字节数组来构造SecretKeySpec,
            SecretKeySpec key=new SecretKeySpec(bytes,"DES");
            //创建密码器
            Cipher cipher=Cipher.getInstance("DES/CBC/PKCS7Padding");
            //用密钥初始化Cipher对象,上面是加密,这是解密模式
            cipher.init(Cipher.DECRYPT_MODE,key,zeroIv);
            //获取解密后的数据
            byte [] decryptedData=cipher.doFinal(byteMi);
            return new String(decryptedData);
        } catch (Exception e) {
            System.out.println("DESUtils::decryptDES:"+e.fillInStackTrace());
        }
        return null;
    }
}

 

你可能感兴趣的:(Android,Studio,android,加密解密,base64,DES)