首页
社区
课程
招聘
[求助]跪求这段注册算法拜托各位了
发表于: 2012-6-5 20:14 7008

[求助]跪求这段注册算法拜托各位了

2012-6-5 20:14
7008
package com.particle.inspector.common.util;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;

public final class i
{
  private Cipher a;
  private byte[] b;
  private int c;

  public i()
  {
    byte[] arrayOfByte = new byte[8];
    arrayOfByte[0] = 1;
    arrayOfByte[1] = 2;
    arrayOfByte[2] = 4;
    arrayOfByte[3] = 5;
    arrayOfByte[4] = 7;
    arrayOfByte[5] = 8;
    arrayOfByte[6] = 3;
    arrayOfByte[7] = 6;
    this.b = arrayOfByte;
    this.c = 3;
    try
    {
      PBEKeySpec localPBEKeySpec = new PBEKeySpec("Particle".toCharArray(), this.b, this.c);
      SecretKey localSecretKey = SecretKeyFactory.getInstance("PBEWITHSHA256AND128BITAES-CBC-BC").generateSecret(localPBEKeySpec);
      this.a = Cipher.getInstance(localSecretKey.getAlgorithm());
      PBEParameterSpec localPBEParameterSpec = new PBEParameterSpec(this.b, this.c);
      this.a.init(1, localSecretKey, localPBEParameterSpec);
      label136: return;
    }
    catch (Exception localException)
    {
      break label136;
    }
  }

  public final String a(String paramString)
  {
    String str = "";
    try
    {
      byte[] arrayOfByte1 = paramString.getBytes("UTF8");
      byte[] arrayOfByte2 = this.a.doFinal(arrayOfByte1);
      if (arrayOfByte2 == null)
      {
        str = "";
      }
      else
      {
        StringBuffer localStringBuffer = new StringBuffer(2 * arrayOfByte2.length);
        for (int i = 0; ; i++)
        {
          if (i >= arrayOfByte2.length)
          {
            str = localStringBuffer.toString();
            break;
          }
          int j = arrayOfByte2[i];
          localStringBuffer.append("0123456789ABCDEF".charAt(0xF & j >> 4)).append("0123456789ABCDEF".charAt(j & 0xF));
        }
      }
    }
    catch (Exception localException)
    {
    }
    return str;
  }
}
希望能顺便跟我说如何制作注册机....

如果还需要哪个文件请跟我说

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自顶一下求神人
2012-6-9 11:51
0
雪    币: 317
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
这只是一个加密过程,也就是说给定一个字符串,使用“Particle”作为私钥,1,2,4,5,7,8,3,6字符数组作为盐(salt), 采用PBEWITHSHA256AND128BITAES-CBC-BC算法,最后得到一个32字节(256bit)的字符串(明文)。
PBEWITHSHA256AND128BITAES-CBC-BC不知到是什么算法,是否对称,如果是对称的话,应该可以得到解密算法。关键是需要找出注册比对的地方,才能知道注册算法,最后才可以尝试写出注册机
2012-6-18 21:57
0
雪    币: 317
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
自己调试了一下,PBEWITHSHA256AND128BITAES-CBC-BC是对称算法,由于私钥和盐都知道了,所以可以通过调用cipher.init(Cipher.DECRYPT_MODE, localSecretKey, localPBEParameterSpec);来得到逆算法
2012-6-19 00:22
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
神人大大,可是我不会调试..
能否有算法写出注册机呢?
2012-6-19 02:46
0
雪    币: 317
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
想来举个例子你就明白了

加密过程:(就是你贴出的代码所实现的过程)

字符串         加密                                               字符数组                             转换成                  字符串
"iltgcl" --------------------------------> {0xcd, 0x26,0x73,..., 0x0f, 0x02} -----------------> "CD26735179C61E02421F434407D22FF2"

解密过程:加密过程的逆运算
                                                                              转换成        字符数组                                          解密
"CD26735179C61E02421F434407D22FF2"-------> {0xcd, 0x26,0x73,..., 0x0f, 0x02} ------------------------>  iltgcl

从字符数组解密成字符串"iltgcl"的时候,私钥/盐等等完全和加密时候的一样,但你需要重新new出来,只是在调用this.a.init(1, localSecretKey, localPBEParameterSpec);将第一个参数换成2,即Cipher.DECRYPT_MODE,这样在调用dofinal函数的时候就会执行解密算法,将字符数组转化成字符串"iltgcl"
2012-6-19 20:12
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是的..的确明白原理了..只是不会自行调试写出注册机..可以请神人指导一下吗
这是我的信箱kk790804@gamil.com可以请神人再信箱指导一下小弟吗
2012-6-19 20:47
0
游客
登录 | 注册 方可回帖
返回