Java加密解密工具(适用于JavaSE/JavaEE/Android)
家电修理 2023-07-16 19:16www.caominkang.com电器维修
本文实例为大家讲解了一个适用于JavaSE/JavaEE/Android的Java加密解密工具,供大家学习,具体内容如下
package longshu.utils.security; import java.lang.reflect.Method; import java.security.InvalidKeyException; import java.security.Key; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class EncryptDecrypt { // 无需创建对象 private EncryptDecrypt() { } public static byte[] SHA1Bit(byte[] source) { try { MessageDigest sha1Digest = MessageDigest.getInstance("SHA-1"); sha1Digest.update(source); byte targetDigest[] = sha1Digest.digest(); return targetDigest; } catch (NoSuchAlgorithmException e) { thro ne RuntimeException(e); } } public static String SHA1(String source) { return byte2HexStr(SHA1Bit(source.getBytes())); } public static byte[] MD5Bit(byte[] source) { try { // 获得MD5摘要算法的 MessageDigest对象 MessageDigest md5Digest = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 md5Digest.update(source); // 获得密文 return md5Digest.digest(); } catch (NoSuchAlgorithmException e) { thro ne RuntimeException(e); } } public static String MD5(String source) { return byte2HexStr(MD5Bit(source.getBytes())); } public static String encodebase64(String source) { Class> clazz = null; Method encodeMethod = null; try {// 优先使用第三方库 clazz = Class.forName(".apache.mons.codec.binary.base64"); encodeMethod = clazz.getMethod("encodebase64", byte[].class); System.out.println("encodebase64-->" + clazz); System.out.println("encodeMethod-->" + encodeMethod); // 反射方法 静态方法执行无需对象 return ne String((byte[]) encodeMethod.invoke(null, source.getBytes())); } catch (ClassNotFoundException e) { String vm = System.getProperty("java.vm.name"); System.out.println(vm); try { if ("Dalvik".equals(vm)) {// Android clazz = Class.forName("android.util.base64"); // byte[] base64.encode(byte[] input,int flags) encodeMethod = clazz.getMethod("encode", byte[].class, int.class); System.out.println("encodebase64-->" + clazz); System.out.println("encodeMethod-->" + encodeMethod); return ne String((byte[]) encodeMethod.invoke(null, source.getBytes(), 0)); } else {// JavaSE/JavaEE clazz = Class.forName("sun.misc.base64Encoder"); encodeMethod = clazz.getMethod("encode", byte[].class); System.out.println("encodebase64-->" + clazz); System.out.println("encodeMethod-->" + encodeMethod); return (String) encodeMethod.invoke(clazz.neInstance(), source.getBytes()); } } catch (ClassNotFoundException e1) { return null; } catch (Exception e1) { return null; } } catch (Exception e) { return null; } // return base64.encodeToString(source, base64.DEFAULT); // return ne String(base64.encode(source.getBytes(), base64.DEFAULT)); // sun.misc.base64Encoder // base64Encoder encoder = ne base64Encoder(); // return encoder.encode(source.getBytes()); // .apache.mons.codec.binary.base64 // return ne String(base64.encodebase64(source.getBytes())); } public static String decodebase64(String encodeSource) { Class> clazz = null; Method decodeMethod = null; try {// 优先使用第三方库 clazz = Class.forName(".apache.mons.codec.binary.base64"); decodeMethod = clazz.getMethod("decodebase64", byte[].class); System.out.println("decodebase64-->" + clazz); System.out.println("decodeMethod-->" + decodeMethod); // 反射方法 静态方法执行无需对象 return ne String((byte[]) decodeMethod.invoke(null, encodeSource.getBytes())); } catch (ClassNotFoundException e) { String vm = System.getProperty("java.vm.name"); System.out.println(vm); try { if ("Dalvik".equals(vm)) {// Android clazz = Class.forName("android.util.base64"); // byte[] base64.decode(byte[] input, int flags) decodeMethod = clazz.getMethod("decode", byte[].class, int.class); System.out.println("decodebase64-->" + clazz); System.out.println("decodeMethod-->" + decodeMethod); return ne String((byte[]) decodeMethod.invoke(null, encodeSource.getBytes(), 0)); } else { // JavaSE/JavaEE clazz = Class.forName("sun.misc.base64Decoder"); decodeMethod = clazz.getMethod("decodeBuffer", String.class); System.out.println("decodebase64-->" + clazz); System.out.println("decodeMethod-->" + decodeMethod); return ne String((byte[]) decodeMethod.invoke(clazz.neInstance(), encodeSource)); } } catch (ClassNotFoundException e1) { return null; } catch (Exception e1) { return null; } } catch (Exception e) { return null; } // return ne // String(base64.decode(encodeSource.getBytes(),base64.DEFAULT)); // sun.misc.base64Decoder // try { // base64Decoder decoder = ne base64Decoder(); // return ne String(decoder.decodeBuffer(encodeSource)); // } catch (IOException e) { // thro ne RuntimeException(e); // } // .apache.mons.codec.binary.base64 // return ne String(base64.decodebase64(encodeSource.getBytes())); } public static byte[] encryptBitAES(byte[] content, String passord) { try { Cipher encryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");// 创建密码器 encryptCipher.init(Cipher.ENCRYPT_MODE, getKey(passord));// 初始化 byte[] result = encryptCipher.doFinal(content); return result; // 加密 } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } public static byte[] decryptBitAES(byte[] content, String passord) { try { Cipher decryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");// 创建密码器 decryptCipher.init(Cipher.DECRYPT_MODE, getKey(passord));// 初始化 byte[] result = decryptCipher.doFinal(content); return result; // 加密结果 } catch (InvalidKeyException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } public static String encryptAES(String content, String passord) { return byte2HexStr(encryptBitAES(content.getBytes(), passord)); } public static String decryptAES(String content, String passord) { return ne String(decryptBitAES(hexStr2Bytes(content), passord)); } private static Key getKey(String passord) thros NoSuchAlgorithmException { SecureRandom secureRandom = ne SecureRandom(passord.getBytes()); // 生成KEY KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); // 转换KEY SecretKeySpec key = ne SecretKeySpec(enCodeFormat, "AES"); return key; } public static String byte2HexStr(byte[] bytes) { int bytesLen = bytes.length; // 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍 StringBuffer hexString = ne StringBuffer(bytesLen 2); for (int i = 0; i < bytesLen; i++) { // 将每个字节与0xFF进行与运算,然后转化为10进制,然后借助于Integer再转化为16进制 String hex = Integer.toHexString(bytes[i] & 0xFF); if (hex.length() < 2) { hexString.append(0);// 如果为1位 前面补个0 } hexString.append(hex); } return hexString.toString(); } public static byte[] hexStr2Bytes(String strIn) { byte[] arrB = strIn.getBytes(); int iLen = arrB.length; // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2 byte[] arrOut = ne byte[iLen / 2]; for (int i = 0; i < iLen; i = i + 2) { String strTmp = ne String(arrB, i, 2); arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16); } return arrOut; } }
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工