Java/Android中的DES加密
来源:互联网 发布:mac上pdf软件 编辑:程序博客网 时间:2024/05/23 11:56
DES (Data Encrypt Standard数据库加密标准) 是一种对称加密算法,目前在安全方面没有AES那么安全,所以逐渐被市场淘汰。一些系统都已经放弃使用DES加密,采用3DES或者AES加密,不过一些过老的系统中还是采用DES加密,所以将代码贴出方便以后遇到可以使用。
代码:
/* 定义加密方式, DESede:加密算法; ECB:工作模式 ; NOPadding:填充方式 */private static final String Algorithm = "DESede/ECB/NOPadding";/** * 说明 :3DES加密 * * @param keybyte * 密钥 * @return * @key data 明文 */public static byte[] encryptMode(byte[] data, byte[] keybyte) {try {// 生成密钥SecretKey deskey = new SecretKeySpec(keybyte, "DESede");// 加密Cipher c1 = Cipher.getInstance(Algorithm);c1.init(Cipher.ENCRYPT_MODE, deskey);byte result[] = c1.doFinal(data);return result;} catch (NoSuchAlgorithmException e1) {e1.printStackTrace();} catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();} catch (Exception e3) {e3.printStackTrace();}return null;}/** * 说明 :3DES解密 * * @param data * 密文 * @param keybyte * 密钥 * @return */public static byte[] decryptMode(byte[] data, byte[] keybyte) {try {// 生成密钥SecretKey deskey = new SecretKeySpec(keybyte, "DESede");// 解密Cipher c1 = Cipher.getInstance(Algorithm);c1.init(Cipher.DECRYPT_MODE, deskey);byte[] result = c1.doFinal(data);return result;} catch (NoSuchAlgorithmException e1) {e1.printStackTrace();} catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();} catch (Exception e3) {e3.printStackTrace();}return null;}
大家可以根据需要将byte[]转换成16进制或者转换为Base64格式,如需要加密字符串最后将byte[]转换为Base64格式,不然会出现乱码;
加密中文字符串流程:
1、字符串转换为Byte数组
2、将Byte数组加密
3、将加密之后的Byte数组转换为Base64格式
解密:
1、将Base64格式字符串转换为Byte数组
2、将Byte数组解密
3、将解密后的Byte数组转换为String格式
Byte[]转16进制字符串
/** * byte数组转换为16进制字符串 * * @param bts * 数据源 * @return 16进制字符串 */public static String bytes2Hex(byte[] bts) {String des = "";String tmp = null;for (int i = 0; i < bts.length; i++) {tmp = (Integer.toHexString(bts[i] & 0xFF));if (tmp.length() == 1) {des += "0";}des += tmp;}return des;}
/** * 将16进制转换为byte数组 * * @param hexString * 16进制字符串 * @return byte数组 */public static byte[] toByte(String hexString) {int len = hexString.length() / 2;byte[] result = new byte[len];for (int i = 0; i < len; i++)result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2),16).byteValue();return result;}
String encrypedValue = Base64.encodeToString( data, Base64.DEFAULT);
byte[] data= Base64.decode(text, Base64.DEFAULT);
byte[] data= str.getBytes("UTF8");
Byte[]转String格式
String str= new String(data);
生成密钥方法:
KeyGenerator kg = KeyGenerator.getInstance("DES"); Key key = kg.generateKey(); byte[] keyBytes = ((Key) key).getEncoded(); String Keystr = DES.bytes2Hex(keyBytes);
0 0
- Java/Android中的DES加密
- Java/Android中的3DES加密
- Java/Android DES加密
- nodejs和java中的des/3des加密解密对比
- Java、Android和iPhone 3DES加密
- android java 3des加密 ECB/CBC
- JAVA/iOS/Android/PHP 通用DES 加密
- android(java) DES加密、解密详解
- 【请求加密】android ios java后台通用DES base64加密
- android des 加密
- android DES加密
- Android DES加密解密
- android des 加密解密
- Android DES加密工具
- Android DES加密实现
- android DES加密
- android 3des 加密
- Android 3DES加密
- ThreadPoolExecutor原理与使用
- java获取项目访问路径的方法
- APP开发实战66-功能级别的BaseActivity设计
- 关于eclipse下连接安卓手机
- 235. Lowest Common Ancestor of a Binary Search Tree
- Java/Android中的DES加密
- [Leetcode]92. Reverse Linked List II
- MAVEN的安装和Myeclipse+maven的配置和使用
- 3.1.5内存管理
- express 与 express-generator
- Spring MVC @PathVariable注解最好显式地指定参数
- 我是渣渣,我要记录进步的历程了。
- C++ 对16进制字符串进行奇校验
- 【hdu】1226 超级密码【bfs】