加密解密工具包DES算法,加密
来源:互联网 发布:格雷福斯泳池派对淘宝 编辑:程序博客网 时间:2024/06/14 05:18
public class CyptoUtils {public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding"; /** * DES算法,加密 * * @param data 待加密字符串 * @param key 加密私钥,长度不能够小于8位 * @return 加密后的字节数组,一般结合Base64编码使用 * @throws InvalidAlgorithmParameterException * @throws Exception */ public static String encode(String key,String data) { if(data == null) return null; try{ DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //key的长度不能够小于8位字节 Key secretKey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance(ALGORITHM_DES); IvParameterSpec iv = new IvParameterSpec("12345678".getBytes()); AlgorithmParameterSpec paramSpec = iv; cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec); byte[] bytes = cipher.doFinal(data.getBytes()); return byte2hex(bytes); }catch(Exception e){ e.printStackTrace(); return data; } } /** * DES算法,解密 * * @param data 待解密字符串 * @param key 解密私钥,长度不能够小于8位 * @return 解密后的字节数组 * @throws Exception 异常 */ public static String decode(String key,String data) { if(data == null) return null; try { DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //key的长度不能够小于8位字节 Key secretKey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance(ALGORITHM_DES); IvParameterSpec iv = new IvParameterSpec("12345678".getBytes()); AlgorithmParameterSpec paramSpec = iv; cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec); return new String(cipher.doFinal(hex2byte(data.getBytes()))); } catch (Exception e){ e.printStackTrace(); return data; } }/** * 二行制转字符串 * @param b * @return */ private static String byte2hex(byte[] b) {StringBuilder hs = new StringBuilder();String stmp;for (int n = 0; b!=null && n < b.length; n++) {stmp = Integer.toHexString(b[n] & 0XFF);if (stmp.length() == 1)hs.append('0');hs.append(stmp);}return hs.toString().toUpperCase();} private static byte[] hex2byte(byte[] b) { if((b.length%2)!=0) throw new IllegalArgumentException();byte[] b2 = new byte[b.length/2];for (int n = 0; n < b.length; n+=2) { String item = new String(b,n,2); b2[n/2] = (byte)Integer.parseInt(item,16);} return b2; } }
0 0
- 加密解密工具包DES算法,加密
- 【加密】DES加密解密算法
- DES加密解密算法
- 加密解密---------->DES算法
- DES加密解密算法
- DES加密解密算法
- DES加密解密算法
- DES加密解密算法
- DES加密解密算法
- DES 加密 解密算法
- des加密解密算法
- Java加密解密算法-DES加密解密
- DES加密/解密算法原理
- c# DES加密解密算法
- C# DES加密解密算法
- DES加密与解密算法
- DES加密解密算法文件
- DES加密、解密字符串算法
- python不同数值(适用于整型的内建函数)类型返回,二进制,八进制otc.
- juddi
- 提高php代码效率的若干写法(真的很实用)
- An introduction to Numpy and Scipy
- OpenCV for mac install(二)故障处理
- 加密解密工具包DES算法,加密
- dns cmd 修改
- Java文件操作之DataInputStream和DataOutputStream
- 成长记-获取当前UIView所在的控制器
- 查看所有的jar是否打包到apk里
- 学习spark之hadoop编译部署
- pdf图片转换成jpg图片的两种方法
- c语言判断体重是否标准的一些问题处理
- ffmpeg 代码实现视频添加水印功能