|
- package comAES;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import javax.crypto.Cipher;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- public class AES {
- private static byte[] a = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0 };;
- public static final byte[] encrypt256(String paramString1, String paramString2)
- {
-
- try
- {
- byte[] arrayOfByte2 = paramString2.getBytes("UTF-8");
- IvParameterSpec localIvParameterSpec = new IvParameterSpec(a);
- SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString1.getBytes("UTF-8"), "AES");
- Cipher localCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- localCipher.init(1, localSecretKeySpec, localIvParameterSpec);
- byte[] arrayOfByte3 = localCipher.doFinal(arrayOfByte2);
- byte[] arrayOfByte1 = arrayOfByte3;
- return arrayOfByte1;
- }
- catch (Exception localException)
- {
- while (true)
- {
- localException.printStackTrace();
- byte[] arrayOfByte1 = null;
- }
- }
- }
- public static final String encrypt256Base64String(String paramString1, String paramString2)
- {
- byte[] arrayOfByte = encrypt256(paramString1, paramString2);
- if (arrayOfByte != null);
- String str = Base64.encode(arrayOfByte);
- return str;
- }
- public static void main(String[] args)throws Exception{
- String str="zxc123456";
- String str2="NXFmQPiPMuchITFiNXFmQPiPMuchITFi";
- String str3=encrypt256Base64String(str2,str);
- System.out.println(str3);
- }
- }
-
- class Base64 {
- private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
- /**
- * data[]进行编码
- * [url=home.php?mod=space&uid=275307]@param[/url] data
- * [url=home.php?mod=space&uid=161696]@Return[/url]
- */
- public static String encode(byte[] data) {
- int start = 0;
- int len = data.length;
- StringBuffer buf = new StringBuffer(data.length * 3 / 2);
-
- int end = len - 3;
- int i = start;
- int n = 0;
-
- while (i <= end) {
- int d = ((((int) data[i]) & 0x0ff) << 16)
- | ((((int) data[i + 1]) & 0x0ff) << 8)
- | (((int) data[i + 2]) & 0x0ff);
-
- buf.append(legalChars[(d >> 18) & 63]);
- buf.append(legalChars[(d >> 12) & 63]);
- buf.append(legalChars[(d >> 6) & 63]);
- buf.append(legalChars[d & 63]);
-
- i += 3;
-
- if (n++ >= 14) {
- n = 0;
- buf.append(" ");
- }
- }
-
- if (i == start + len - 2) {
- int d = ((((int) data[i]) & 0x0ff) << 16)
- | ((((int) data[i + 1]) & 255) << 8);
-
- buf.append(legalChars[(d >> 18) & 63]);
- buf.append(legalChars[(d >> 12) & 63]);
- buf.append(legalChars[(d >> 6) & 63]);
- buf.append("=");
- } else if (i == start + len - 1) {
- int d = (((int) data[i]) & 0x0ff) << 16;
-
- buf.append(legalChars[(d >> 18) & 63]);
- buf.append(legalChars[(d >> 12) & 63]);
- buf.append("==");
- }
-
- return buf.toString();
- }
-
- private static int decode(char c) {
- if (c >= 'A' && c <= 'Z')
- return ((int) c) - 65;
- else if (c >= 'a' && c <= 'z')
- return ((int) c) - 97 + 26;
- else if (c >= '0' && c <= '9')
- return ((int) c) - 48 + 26 + 26;
- else
- switch (c) {
- case '+':
- return 62;
- case '/':
- return 63;
- case '=':
- return 0;
- default:
- throw new RuntimeException("unexpected code: " + c);
- }
- }
-
- /**
- * Decodes the given Base64 encoded String to a new byte array. The byte
- * array holding the decoded data is returned.
- */
-
- public static byte[] decode(String s) {
-
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- decode(s, bos);
- } catch (IOException e) {
- throw new RuntimeException();
- }
- byte[] decodedBytes = bos.toByteArray();
- try {
- bos.close();
- bos = null;
- } catch (IOException ex) {
- System.err.println("Error while decoding BASE64: " + ex.toString());
- }
- return decodedBytes;
- }
-
- private static void decode(String s, OutputStream os) throws IOException {
- int i = 0;
-
- int len = s.length();
-
- while (true) {
- while (i < len && s.charAt(i) <= ' ')
- i++;
-
- if (i == len)
- break;
-
- int tri = (decode(s.charAt(i)) << 18)
- + (decode(s.charAt(i + 1)) << 12)
- + (decode(s.charAt(i + 2)) << 6)
- + (decode(s.charAt(i + 3)));
-
- os.write((tri >> 16) & 255);
- if (s.charAt(i + 2) == '=')
- break;
- os.write((tri >> 8) & 255);
- if (s.charAt(i + 3) == '=')
- break;
- os.write(tri & 255);
-
- i += 4;
- }
-
- }
-
- }
复制代码 |
|