|
30精币
- public static String a(String str, String str2) {
- try {
- Cipher instance = Cipher.getInstance("AES/CFB/NoPadding");
- byte[][] a = a(32, 16, null, str.getBytes(Key.STRING_CHARSET_NAME), 0);
- instance.init(1, new SecretKeySpec(a[0], "AES"), new IvParameterSpec(a[1]));
- return a(a(instance.getIV(), instance.doFinal(str2.getBytes(Key.STRING_CHARSET_NAME))));
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
复制代码
上边是AES/CFB/NOpadding加密
这个是 a(32, 16, null, str.getBytes(Key.STRING_CHARSET_NAME), 0); 这个a的代码。他是怎么处理的这个 ljhlksslgkjfhlksuo8472rju6p2od03 这个字符串呢
- public static byte[][] a(int i, int i2, byte[] bArr, byte[] bArr2, int i3) throws Exception {
- byte[] digest;
- int i4;
- MessageDigest instance = MessageDigest.getInstance("md5");
- byte[] bArr3 = new byte[i];
- byte[] bArr4 = new byte[i2];
- byte[][] bArr5 = {bArr3, bArr4};
- if (bArr2 == null) {
- return bArr5;
- }
- byte[] bArr6 = null;
- int i5 = i2;
- int i6 = 0;
- int i7 = 0;
- int i8 = i;
- int i9 = 0;
- while (true) {
- instance.reset();
- int i10 = i9 + 1;
- if (i9 > 0) {
- instance.update(bArr6);
- }
- instance.update(bArr2);
- if (bArr != null) {
- instance.update(bArr, 0, 8);
- }
- digest = instance.digest();
- for (int i11 = 1; i11 < i3; i11++) {
- instance.reset();
- instance.update(digest);
- digest = instance.digest();
- }
- if (i8 > 0) {
- i4 = 0;
- while (i8 != 0 && i4 != digest.length) {
- bArr3[i6] = digest[i4];
- i8--;
- i4++;
- i6++;
- }
- } else {
- i4 = 0;
- }
- if (i5 > 0 && i4 != digest.length) {
- while (i5 != 0 && i4 != digest.length) {
- bArr4[i7] = digest[i4];
- i5--;
- i4++;
- i7++;
- }
- }
- if (i8 == 0 && i5 == 0) {
- break;
- }
- i9 = i10;
- bArr6 = digest;
- }
- for (int i12 = 0; i12 < digest.length; i12++) {
- digest[i12] = 0;
- }
- return bArr5;
- }
复制代码
有没有懂java的大神帮忙看一下
|
|