DES加密、解密

加密、解密操作

/** 
 * 
 * <p> 
 * 采用JDK内置类进行真正的加密操作 
 * @param byteS 
 * @param password 
 * @return byte[]    
 */  
private static byte[] encryptByte(byte[] byteS, byte password[]) {  
    byte[] byteFina = null;  
    try {// 初始化加密/解密工具  
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");  
        DESKeySpec desKeySpec = new DESKeySpec(password);  
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);  
        IvParameterSpec iv = new IvParameterSpec(keys);  
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);  
        byteFina = cipher.doFinal(byteS);  
    } catch (Exception e) {  
        throw new RuntimeException(e);  
    }  
    return byteFina;  
}  

/** 
 * 
 * <p> 
 * 采用JDK对应的内置类进行解密操作 
 * @param byteS 
 * @param password 
 * @return byte[]     
 */  
private static byte[] decryptByte(byte[] byteS, byte password[]) {  
    byte[] byteFina = null;  
    try {// 初始化加密/解密工具  
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");  
        DESKeySpec desKeySpec = new DESKeySpec(password);  
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);  
        IvParameterSpec iv = new IvParameterSpec(keys);  
        cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);  
        byteFina = cipher.doFinal(byteS);  
    } catch (Exception e) {  
        throw new RuntimeException(e);  
    }  
    return byteFina;  
}  

在实际加密或解密的过程后又将结果用base64包起来。

/** 
 * 
 * <p> 
 * Des加密strMing,然后base64转换 
 * @param strMing 
 * @param md5key 
 * @return String   
 */  
public static String encryptStr(String strMing, byte md5key[]) {  
    byte[] byteMi = null;  
    byte[] byteMing = null;  
    String strMi = "";  
    try {  
        byteMing = strMing.getBytes("utf-8");  
        byteMi = encryptByte(byteMing, md5key);  
        BASE64Encoder base64Encoder = new BASE64Encoder();  
        strMi = base64Encoder.encode(byteMi);  
    } catch (Exception e) {  
        throw new RuntimeException(e);  
    } finally {  
        byteMing = null;  
        byteMi = null;  
    }  
    return strMi;  
}  

/** 
 * 
 * <p> 
 * Base64转换strMi,然后进行des解密 
 * @param strMi 
 * @param md5key 
 * @return String    
 */  
public static String decryptStr(String strMi, byte md5key[]) {  
    byte[] byteMing = null;  
    String strMing = "";  
    try {  
        BASE64Decoder decoder = new BASE64Decoder();  
        byteMing = decoder.decodeBuffer(strMi);  
        byteMing = decryptByte(byteMing, md5key);  
        strMing = new String(byteMing);  
    } catch (Exception e) {  
        throw new RuntimeException(e);  
    } finally {  
        byteMing = null;  
    }  
    return strMing;  
}  

同时可以将字符集编码通过参数的形式进行传输。 保证客户端与服务器之间字符集相同

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 公司接口需要加密,因此需要iOS或android端、.NET服务器端实现同样的加密解密方式。 原本在项目中有DES...
    sxtra阅读 4,551评论 0 1
  • 刚来的时候公司网络数据传输都是用的明文,这两天说要加密传输就研究了一下des对称加密和rsa非对称加密两种加密方式...
    一点愁阅读 5,712评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,473评论 19 139
  • 最近项目中要求用des加密 , 之前没有用到过, 查了很多资料,为了给大家节省时间 直接上代码 des首先要用到G...
    井空烀地瓜阅读 4,112评论 0 0
  • DES全称为Data EncryptionStandard,即数据加密标准,是一种使用密钥加密的块算法,1977年...
    黄晓果阅读 5,016评论 0 0