Crack Random(Java)

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

java.util.Random产生的随机数是有一定周期的,改进了lcg的一个版本..还是security安全点.

import java.util.Random;

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2001</p>

* <p>Company: </p>

* @author not attributable

* @version 1.0

*/

public class RandomCracker {

protected static final long a=0x5deece66dL;

protected static final long b=0xbL;

protected static final long m=(1L<<48)-1;

public static void crack(int xint0,int xint1)

{

long i;

long seed=-1L;

long x0=(xint0&0xFFFFFFFFL)<<16;

long x1=(xint1&0xFFFFFFFFL);

for(i=0;i<0xFFFFL;i++){

seed=(((x0+i)*a)+b)&m;

if ((seed>>>16)==x1){

break;

}

seed=-1L;

}

if (seed==-1L)

{

throw new RuntimeException("Input Error!");}

else{

System.out.println("The Cracked x2="+(int)(((seed*a)+b&m)>>>16));

}

}

public static void main(String args[])

{

Random r=new Random();

int x0=r.nextInt();

int x1=r.nextInt();

System.out.println(" x0= "+x0);

System.out.println(" x1= "+x1);

crack(x0,x1);

System.out.println(" The Real x2="+r.nextInt());

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有