123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- package com.rf.youth.security;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- import java.security.SecureRandom;
- import java.util.Base64;
- /**
- * @author zzf
- * @description:
- * @date 2021/7/29 9:16
- */
- public class DESede {
- private DESede() {
- }
- /**
- * 加解密使用的字符集
- */
- private static final String DESEDE_CHARSET_NAME = "UTF-8";
- /**
- * 加密算法
- */
- private static final String DESEDE = "DESede";
- /**
- * 算法的转换名称
- */
- private static final String DES_CBC = "DESede/CBC/PKCS5Padding";
- /**
- * 默认密钥
- */
- public static final String DEFAULT_KEY = "240262447423713749922240";
- /**
- * 默认向量值
- */
- public static String DEFAULT_DESEDE_IV = "12345678";
- /**
- * 使用3Des算法进行明文加密
- *
- * @param key 24个字符的密钥(3个des密钥)
- * @param ivByte 8字符的随机向量
- * @param value 需要进行加密的原明文字节数组
- * @return 加密后的密文字节数组,如果加密失败,返回null
- */
- public static byte[] encrypt(byte[] key, byte[] ivByte, byte[] value) {
- try {
- SecureRandom sr = new SecureRandom();
- SecretKey securekey = new SecretKeySpec(key, DESEDE);
- IvParameterSpec iv = new IvParameterSpec(ivByte);
- Cipher cipher = Cipher.getInstance(DES_CBC);
- cipher.init(Cipher.ENCRYPT_MODE, securekey, iv, sr);
- return cipher.doFinal(value);
- } catch (Exception e) {
- }
- return null;
- }
- /**
- * 使用3Des算法进行密文解密
- *
- * @param key 24个字符的密钥(3个des密钥)
- * @param ivByte 8字符的随机向量
- * @param value 需要进行解密的密文字节数组
- * @return 返回解密后的明文字节数组, 如果解密失败,返回null
- */
- public static byte[] decrypt(byte[] key, byte[] ivByte, byte[] value) {
- try {
- SecureRandom sr = new SecureRandom();
- SecretKey securekey = new SecretKeySpec(key, DESEDE);
- IvParameterSpec iv = new IvParameterSpec(ivByte);
- Cipher cipher = Cipher.getInstance(DES_CBC);
- cipher.init(Cipher.DECRYPT_MODE, securekey, iv, sr);
- return cipher.doFinal(value);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 进行Base64编码
- *
- * @param src 原字符串
- * @return 返回经过Base64编码后的字符串
- */
- public static String base64Encode(String src) throws Exception {
- Base64.Encoder encoder = Base64.getEncoder();
- return encoder.encodeToString(src.getBytes(DESEDE_CHARSET_NAME));
- }
- /**
- * 进行Base64编码
- *
- * @param buff 原字符串
- * @return 返回经过Base64编码后的字符串
- */
- public static String base64Encode(byte[] buff) throws Exception {
- Base64.Encoder encoder = Base64.getEncoder();
- return encoder.encodeToString(buff);
- }
- /**
- * 进行Base64解码
- *
- * @param src 经Base64编码后的字符串
- * @return 返回解码后的字符串
- * @throws Exception
- */
- public static String base64Decode(String src) throws Exception {
- Base64.Decoder decoder = Base64.getDecoder();
- return new String(decoder.decode(src), DESEDE_CHARSET_NAME);
- }
- /**
- * 进行Base64解码
- *
- * @param src 经Base64编码后的字符串
- * @return 返回解码后的字符串
- * @throws Exception
- */
- public static byte[] base64DecodeToBytes(String src) throws Exception {
- Base64.Decoder decoder = Base64.getDecoder();
- return decoder.decode(src);
- }
- public static String encryptString(String str) {
- try {
- byte[] encrypt = DESede.encrypt(DEFAULT_KEY.getBytes(), DEFAULT_DESEDE_IV.getBytes(), str.getBytes());
- String enStr = DESede.base64Encode(encrypt);
- return enStr;
- } catch (Exception e) {
- throw new IllegalArgumentException(e.getMessage());
- }
- }
- /**
- * 字符串解密
- *
- * @throws Exception
- */
- public static String decryptString(String str) {
- //解密字符串
- try {
- byte[] strBytes = DESede.base64DecodeToBytes(str);
- return new String(DESede.decrypt(DEFAULT_KEY.getBytes(), DEFAULT_DESEDE_IV.getBytes(), strBytes));
- } catch (Exception e) {
- throw new IllegalArgumentException(e.getMessage());
- }
- }
- public static void main(String[] args) {
- //System.out.println(encryptString("我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,我通常参加我能参加的各种社会交往。不管是什么社交活动,我一般是能去就去,"));
- //System.out.println("解密后为:" + decryptString("4GjfmTsYhzE="));
- //System.out.println(decryptString("8xoQBn+V0Rh3hS42Dso7yxbmomdNsF96WUb/0MM39S5uwafzoy+jtTDGjA094H0hbfc3O7JHHQKH6zjDJNW/u0i9+4q3hYipPwstQUvwGrmipy1fF3UmTogdGSoMOCJGAYshO78EQthNPtSU2AD/7Ry17IgVBg5nXcWVtj8th7AxOo7kKsWjtTr4z3fcI1pWPMfIe3OFM1GYeLwpEe9Axrx69FOtD629QRTj3dOVY3kMFfTCqi2ElYy9pY3hAl7JNH+bxNxkgeJemTJUEt+Z+QmhfcmGmnt61qAtD9DHs31/fu6AJcnPNPEV0pZbdQlVOT7N2u3zduSohWui6O6iMnG/TNOHh1dLR9gyxWNiAXTseZ32ajKotfoghXw5jU8GdoILzvNEMkkoBVAIwUYsj4gWszbGY3FSxBJSnRfyv/hSbvKdP9NmfzIksK+Jy9JeQbwBLJ+IPat8PNnFBBccVPakqX56zGaHkLolt48K+C4XTaZxtrQaPcgNITvw1c3BP+/paZXOkL8FxxJAr1tx4kwN2YFMlzhmMGyH3iovlI5eJnl/xhz/iUufReDmkmPyc3istdzXkpwCe001+pIK7tYa4e9SnBKXfbh25Sqncy7UALF7ZyOBFocwrTrTuW4o3+eaurB6TWjuL4B0A3iQFmZ61uZgb8rs+Jxo94/WfWpg/0HMu5tyeFlcaHNRgFMg8U42sEDP+1kyVgvot8lfXP+jOzxWrFLhnjxrbI7V2uklUILDCb3VZJy6ITu+ilBGI5kHYcdhRMkJG8rcXfSoF5uUJk9ppvFXD5wxeyZeLfNPmIpKI4HWPahn2uOJ1cXhGkc+jBEws+p7uCMaw8UD/btwHK8To4M7HqQAsOXDJjDnr4w0Qrb4Y6wYfXcSWZW7Q8nsAIyzjFq0Y+3sTQH6zUcHXu/3b94jhqK5CoJ/4xlElHVBcECb095HNGw8DOHkVBloGPZjEB2W7SsSeHm0PuUSRnyhfaryuvF56R88LJmmbrKBxXAeAdQ3pTMwj1o8YyJcEQdIswJN40DaIkFOeWijLSodpcAvvdtv8FKRoHsmIn0lndQHiNoiMpjZQfvutUGNB69cHbkjp/x+CqU2aN2W/pKzya1+gjZ6yhT3W8z3o2I883owgmsD6VPtmVt/tK+NgtGZ7tTnTzgiX7yrc/NScaSYBpiJj+Oc5YAH+4UFzHL+sFmbqosb5e4dTDvhvgxYYeiGy809kVge+opDZwNYWAp79OOS8R3WGizGZrWHqaVnoYfxxcYyiDKY5brJamuibX1C4tc65orQcmKYFXdr8s7zoakMFf1+om1anB0xOhxvvDmFoZnY2va1aI1HXSGs5buKpvTPSvOjmERofQFUWNeudH0iwTot6z0uVYJozxKUu1RgtWLTgXE0JS+AQYlkNAa9Yfyzkwto5dFBtOTJdDo0XGGgzJskevUf2AA="));
- }
- }
|