1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| import org.apache.commons.codec.binary.Base64; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.Key; import java.security.Security; import java.security.spec.AlgorithmParameterSpec; import java.util.Date;
public class AES {
public AES() { }
static { if (Security.getProvider("BC") == null) { Security.addProvider(new BouncyCastleProvider()); }
}
public static String Decrypt(String sSrc, String sKey) throws Exception { try { if (sKey == null) { System.out.print("16位skey不为空"); return null; } else if (sKey.length() != 16) { System.out.print("skey长度不是16位"); return null; } else { byte[] raw = sKey.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(2, skeySpec); byte[] encrypted1 = (new Base64()).decode(sSrc);
try { byte[] original = cipher.doFinal(encrypted1); return new String(original, "utf-8"); } catch (Exception var8) { System.out.println(var8.toString()); return null; } } } catch (Exception var9) { System.out.println(var9.toString()); return null; } }
private static Key getKey(String str) throws Exception { DESKeySpec dks = new DESKeySpec(str.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES", "BC"); return keyFactory.generateSecret(dks); }
private static AlgorithmParameterSpec getIv(String iv) throws Exception { return new IvParameterSpec(iv.getBytes("UTF-8")); }
public static String encrypt(String key, String iv, String str) throws Exception { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding", "BC"); cipher.init(1, getKey(key), getIv(iv)); byte[] data = cipher.doFinal(str.getBytes("UTF-8")); return Base64encode(data); }
public static String decrypt(String key, String iv, String str) throws Exception { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding", "BC"); cipher.init(2, getKey(key), getIv(iv)); byte[] sss = cipher.doFinal(Base64decode(str)); return new String(sss, "UTF-8"); }
public static String aesDecrypt(String key, String iv, String str) throws Exception { str = str.replace("_", "+"); byte[] encrypted1 = Base64decode(str); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC"); cipher.init(2, new SecretKeySpec(key.getBytes("UTF-8"), "AES"), getIv(iv)); byte[] original = cipher.doFinal(encrypted1); return new String(original, "UTF-8"); }
public static String aesEncrypt(String key, String iv, String str) throws Exception { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC"); cipher.init(1, new SecretKeySpec(key.getBytes("UTF-8"), "AES"), getIv(iv)); byte[] encrypted = cipher.doFinal(str.getBytes("UTF-8")); String s = Base64encode(encrypted); s = s.replace("+", "_"); return s; }
private static String Base64encode(byte[] data) throws Exception { return new String(Base64.encodeBase64(data), "UTF-8"); }
private static byte[] Base64decode(String str) throws Exception { return Base64.decodeBase64(str.getBytes("UTF-8")); }
public static String getTime() { return String.valueOf(new Date().getTime()); }
public static void main(String[] args) throws Exception { Date now = new Date(1637117714679L); System.out.println(now.getTime()); System.out.println(aesEncrypt("3tcac4konflddsrh", "xapsk6al0opqq4eo", String.format("%s、%s", "313015", now.getTime()))); System.out.println(aesDecrypt("3tcac4konflddsrh", "xapsk6al0opqq4eo", "yKTNKqAcPD6cFTso4Qqbs_W7aA3RNKBu3viOx7ESvBc=")); System.out.println("------------------------------ 分割 ------------------------------ ");
} }
|