赞
踩
一、Aes加解密工具类
- public class Aes {
- /***
- * key和iv值可以随机生成
- */
- private static String KEY = "123456789";
-
- private static String IV = "123456789";
-
- /***
- * 加密
- * @param data 要加密的数据
- * @return encrypt
- */
- public static String encrypt(String data){
- return encrypt(data, KEY, IV);
- }
-
- /***
- * param data 需要解密的数据
- * 调用desEncrypt()方法
- */
- public static String desEncrypt(String data){
- return desEncrypt(data, KEY, IV);
- }
-
- /**
- * 加密方法
- * @param data 要加密的数据
- * @param key 加密key
- * @param iv 加密iv
- * @return 加密的结果
- */
- private static String encrypt(String data, String key, String iv){
- try {
- Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
- int blockSize = cipher.getBlockSize();
-
- byte[] dataBytes = data.getBytes();
- int plaintextLength = dataBytes.length;
- if (plaintextLength % blockSize != 0) {
- plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
- }
-
- byte[] plaintext = new byte[plaintextLength];
- System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
-
- SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
- IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
-
- cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
- byte[] encrypted = cipher.doFinal(plaintext);
-
- return new Base64().encodeToString(encrypted);
-
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
- /**
- * 解密方法
- * @param data 要解密的数据
- * @param key 解密key
- * @param iv 解密iv
- * @return 解密的结果
- */
- private static String desEncrypt(String data, String key, String iv){
- try {
- byte[] encrypted1 = new Base64().decode(data);
-
- Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
- SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
- IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
- cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
- byte[] original = cipher.doFinal(encrypted1);
- return new String(original).trim();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
二、Md5盐值加密
- public class Md5Util {
-
- /**
- * 普通MD5
- * @return
- */
- public static String MD5(String input) {
- MessageDigest md5 = null;
- try {
- md5 = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- return "check jdk";
- } catch (Exception e) {
- e.printStackTrace();
- return "";
- }
- char[] charArray = input.toCharArray();
- byte[] byteArray = new byte[charArray.length];
-
- for (int i = 0; i < charArray.length; i++) {
- byteArray[i] = (byte) charArray[i];
- }
- byte[] md5Bytes = md5.digest(byteArray);
- StringBuffer hexValue = new StringBuffer();
- for (int i = 0; i < md5Bytes.length; i++) {
- int val = ((int) md5Bytes[i]) & 0xff;
- if (val < 16) {
- hexValue.append("0");
- }
- hexValue.append(Integer.toHexString(val));
- }
- return hexValue.toString();
-
- }
-
-
-
-
- /**
- * 加盐MD5
- * @param password
- * @return
- */
- public static String generate(String password) {
- Random r = new Random();
- StringBuilder sb = new StringBuilder(16);
- sb.append(r.nextInt(99999999)).append(r.nextInt(99999999));
- int len = sb.length();
- if (len < 16) {
- for (int i = 0; i < 16 - len; i++) {
- sb.append("0");
- }
- }
- String salt = sb.toString();
- password = md5Hex(password + salt);
- char[] cs = new char[48];
- for (int i = 0; i < 48; i += 3) {
- cs[i] = password.charAt(i / 3 * 2);
- char c = salt.charAt(i / 3);
- cs[i + 1] = c;
- cs[i + 2] = password.charAt(i / 3 * 2 + 1);
- }
- return new String(cs);
- }
-
- /**
- * 校验加盐后是否和原文一致
- * @param password
- * @param md5
- * @return
- */
- public static boolean verify(String password, String md5) {
- char[] cs1 = new char[32];
- char[] cs2 = new char[16];
- for (int i = 0; i < 48; i += 3) {
- cs1[i / 3 * 2] = md5.charAt(i);
- cs1[i / 3 * 2 + 1] = md5.charAt(i + 2);
- cs2[i / 3] = md5.charAt(i + 1);
- }
- String salt = new String(cs2);
- return md5Hex(password + salt).equals(new String(cs1));
- }
-
- /**
- * 获取十六进制字符串形式的MD5摘要
- */
- private static String md5Hex(String src) {
- try {
- MessageDigest md5 = MessageDigest.getInstance("MD5");
- byte[] bs = md5.digest(src.getBytes());
- return new String(Hex.encode(bs));
- } catch (Exception e) {
- return null;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。