JAVA,AES加密算法
来源:互联网 发布:手机4g网络测速在线 编辑:程序博客网 时间:2024/06/05 14:25
private static final String AES = "AES"; private static final String CHARSET_NAME = "utf-8"; private static SecretKeySpec getKey(String password) throws NoSuchAlgorithmException { // 密钥加密器生成器 KeyGenerator kgen = KeyGenerator.getInstance(AES); SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(password.getBytes()); kgen.init(128, random); // 创建加密器 SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES); return key; } public static String encode(String str, String password) { byte[] arr = encodeToArr(str, password); return byteArrToString(arr); } private static byte[] encodeToArr(String str, String password) { try { Cipher cipher = Cipher.getInstance(AES);// 创建密码器 byte[] byteContent = str.getBytes(CHARSET_NAME); cipher.init(Cipher.ENCRYPT_MODE, getKey(password));// 初始化 byte[] result = cipher.doFinal(byteContent); return result; } catch (Exception e) { e.printStackTrace(); } return null; } public static String decode(String hexStr, String password) { try { byte[] arr = string2ByteArr(hexStr); return decode(arr, password); } catch (Exception e) { e.printStackTrace(); return null; } } private static String decode(byte[] arr, String password) { try { // 创建密码器 Cipher cipher = Cipher.getInstance(AES); cipher.init(Cipher.DECRYPT_MODE, getKey(password));// 初始化 byte[] result = cipher.doFinal(arr); return new String(result, CHARSET_NAME); } catch (Exception e) { e.printStackTrace(); } return null; } private static String byteArrToString(byte[] arr) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; i++) { String s = Integer.toString(arr[i] + 128, 16); if (s.length() == 1) { s = "0" + s; } sb.append(s); } return sb.toString().toUpperCase(); } private static byte[] string2ByteArr(String s) { s = s.toUpperCase(); String str = "0123456789ABCDEF"; byte[] arr = new byte[s.length() / 2]; for (int i = 0; i < arr.length; i++) { char s1 = s.charAt(i * 2); char s2 = s.charAt(i * 2 + 1); int tmp1 = str.indexOf(s1) * 16; int tmp2 = str.indexOf(s2); arr[i] = (byte) (tmp1 + tmp2 - 128); } return arr; }
0 0
- Java加密算法 AES
- Java加密算法 AES
- java 中的 aes 加密算法
- JAVA,AES加密算法
- java封装AES加密算法
- Java AES 加密算法
- JAVA-对称加密算法AES
- JAVA实现AES加密算法代码
- Java 加密 AES 对称加密算法
- java实现AES可逆加密算法
- aes加密算法java代码实现
- 【Java加密解密】AES加密算法
- Java 加密 AES 对称加密算法
- JAVA AES加密算法实现代码
- Java对称加密算法之AES
- Java 加密 AES 对称加密算法
- AES加密算法,JAVA实现示例
- AES加密算法的JAVA实现
- 给初学者的 Android 加密工具
- android混淆代码
- view、viewGroup事件传递简单测试
- Java的多线程编程模型2--怎样才线程安全
- 第五章:纹理
- JAVA,AES加密算法
- 给初学者,OC知识的简单总结
- oracle 11g不能导出空表的多种解决方法
- eclipse中导入jar包的源码
- JAVA下wordpress加密
- ap0100at_ds移植步骤
- 2012年5月SAT香港真题解析
- cookie实现登陆页面保存用户名
- XMPP协议实现原理介绍