首页
论坛
课程
招聘
[原创]一段代码不能看懂,求大神解释
2013-8-27 19:19 5887

[原创]一段代码不能看懂,求大神解释

2013-8-27 19:19
5887
package com.xx.b.a;

import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public final class a
{
  private static final char[] a = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 };

  public static String a(String paramString1, String paramString2)
  {
    try
    {
      MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
      localMessageDigest.update(paramString1.getBytes());
      byte[] arrayOfByte = localMessageDigest.digest();
      StringBuilder localStringBuilder = new StringBuilder(arrayOfByte.length << 1);
      for (int i = 0; ; i++)
      {
        if (i >= arrayOfByte.length)
        {
          String str = localStringBuilder.toString();
          paramString1 = str;
          SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString1.substring(paramString1.length() / 2).getBytes(), "AES");
          Cipher localCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          localCipher.init(1, localSecretKeySpec, new IvParameterSpec("2012061372065459".getBytes()));
          return URLEncoder.encode(new String(b.a(localCipher.doFinal(paramString2.getBytes()))), "utf-8");
        }
        localStringBuilder.append(a[((0xF0 & arrayOfByte[i]) >>> 4)]);
        localStringBuilder.append(a[(0xF & arrayOfByte[i])]);
      }
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      while (true)
        localNoSuchAlgorithmException.printStackTrace();
    }
  }
}

传进的参数1:2012241372065459
参数2:xxx1=64555550&xx2=1377601186783&xx3=128&xx4=&xx5=0

2022 KCTF春季赛【最佳人气奖】火热评选中!快来投票吧~

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 147
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fanweiriu 活跃值 2013-9-7 16:48
2
0
目测就是对字符串按照密码加密
雪    币: 37
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天籁の圁 活跃值 2013-9-7 22:56
3
0
单纯的客户端加密,服务端解密。
为的就防止篡改 提交给服务器的参数
雪    币: 111
活跃值: 活跃值 (85)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 活跃值 2013-9-9 17:26
4
0
狠直接、很简单的一个AES加密
连随机salt都不加,所以一个输入,加密必然得到一个输出

对param1计算MD5摘要,hex格式,然后将hex格式摘要后半部分作为AES密钥,使用AES算法加密param2,初始化向量IV固定为:2012061372065459,加密结果经过b.a转换再转成UTF-8字节
雪    币: 172
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iverson 活跃值 2014-5-22 17:21
5
0
谢谢大神解答
游客
登录 | 注册 方可回帖
返回