Java 使用另一个字符串生成32位字符串?

Java 使用另一个字符串生成32位字符串?,java,android,string,Java,Android,String,我想在应用程序中使用另一个字符串生成32位字符串。 我怎么能这样做,我有一个像这样的字符串64459003-1a63-4B3B3B-b649-ffab8433806b。 我需要使用类似于字符串密码的密钥生成一个32位字符串。 我是新手,请帮忙 注意:我想要一个算法,如果以后调用,它可以重新生成相同的字符串 我真正想要的是: 我想从android设备的UUID生成一个加密的或某种类型的32位字符串,并将其用于激活我的应用程序。用户将向技术支持发送生成的字符串,技术支持将发送回激活Id以激活应用程序

我想在应用程序中使用另一个字符串生成32位字符串。 我怎么能这样做,我有一个像这样的字符串64459003-1a63-4B3B3B-b649-ffab8433806b。 我需要使用类似于字符串密码的密钥生成一个32位字符串。 我是新手,请帮忙

注意:我想要一个算法,如果以后调用,它可以重新生成相同的字符串

我真正想要的是: 我想从android设备的UUID生成一个加密的或某种类型的32位字符串,并将其用于激活我的应用程序。用户将向技术支持发送生成的字符串,技术支持将发送回激活Id以激活应用程序

是的,我想它也被颠倒

具有32位状态的字符串只能表示
2^32
状态。但是为了使反向转换能够工作,您必须能够表示比这多得多的状态。(输入字符串看起来像128位UUID的字符串表示形式。这意味着
2^128
不同的状态。)


您最好实现一个持久查找表。如果你有更多的密码和数据库中的前一个字符串,那么即使是这个密码也会被破解。您可以使用java的随机类。
生成初始字符串:

//initially
Random rand=new Random();
byte[4] a=new byte[4];
rand.nextBytes(a);
//a will contain the 32 bit string
//store a in database
//Next time
Random b=new Random();
//convert tehe previous value to long
long value=0;
for(int i=0;i<b.length;i++)
 {
   value+=(b[i] & 0xff) <<(8*i);
   //System.out.println(Long.toString(value));
 }
b.setSeed(value);
//using this seed value generate a new random number
b.nextbytes(b);
//store this b to data base
//最初
Random rand=新的Random();
字节[4]a=新字节[4];
兰特下字节(a);
//a将包含32位字符串
//将数据存储在数据库中
//下次
随机b=新随机();
//将上一个值转换为long
长值=0;

对于(int i=0;i“如果以后调用,则重新生成相同的字符串”是什么意思你说的32位字符串是什么意思?那么你想要code+passkey=32位字符串?你想逆转这个过程吗?@Navdroid:你想只在密码正确时才更改字符串吗?另外,如果你说你想用你的应用程序实际完成什么也会有帮助。是的,这是UUID,但我没有得到你写的东西..我是一个n现在开始!!@Navdroid,这意味着变量太小,无法保存您试图输入的数据。但是,如果您有一个额外的数据库和少于40亿的用户,您可以解决它。坦率地说,这一切似乎有点不成熟。您为什么不解释一下您真正想要实现的是什么……而不是混乱用你对解决方案的模糊概念来解释这个问题。实际上,这段代码还可以,但我不想把它存储在数据库中。我希望我可以先从其他字符串STR生成一个字符串,比如passkey,然后再将它转换回STR,而不依赖于应用程序。@Navdroid:如果你说了你想实现的目标,那会很有帮助。