如何根据一个串产生唯一的序列?

kyousuke 2012-08-31 02:00:22
比如给一个字符串"12345678",然后基于这个串产生一个N长度的唯一串,其实就是12345678为种子。
类似UUID,但是UUID好像长度一定是16位的?我想能够产生指定长度的唯一串。
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowerjack 2012-09-01
  • 打赏
  • 举报
回复
UUID
a512796048 2012-09-01
  • 打赏
  • 举报
回复
des 加密 楼主自己研究

package p;
import java.security.Key;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class DES {

Key key;

public DES(String str) {
setKey(str);//生成密匙
}

public DES() {
setKey(“siyue_qi”);
}

/**
* 根据参数生成KEY
*/
public void setKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance(“DES”);
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
throw new RuntimeException(
“Error initializing SqlMap class. Cause:” + e);
}
}

/**
* 加密String明文输入,String密文输出
*/
public String getEncString(String strMing) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi =““;
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = strMing.getBytes(“UTF8”);
byteMi = this.getEncCode(byteMing);
strMi = base64en.encode(byteMi);
} catch (Exception e) {
throw new RuntimeException(
“Error initializing SqlMap class. Cause:” + e);
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return strMi;
}

/**
* 解密 以String密文输入,String明文输出
* @param strMi
* @return
*/
public String getDesString(String strMi) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing =““;
try {
byteMi = base64De.decodeBuffer(strMi);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing,”UTF8”);
} catch (Exception e) {
throw new RuntimeException(
“Error initializing SqlMap class. Cause:” + e);
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return strMing;
}

/**
* 加密以byte[]明文输入,byte[]密文输出
* @param byteS
* @return
*/
private byte[] getEncCode(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance(“DES”);
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
throw new RuntimeException(
“Error initializing SqlMap class. Cause:” + e);
} finally {
cipher = null;
}
return byteFina;
}

/**
* 解密以byte[]密文输入,以byte[]明文输出
* @param byteD
* @return
*/
private byte[] getDesCode(byte[] byteD) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance(“DES”);
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
throw new RuntimeException(
“Error initializing SqlMap class. Cause:” + e);
} finally {
cipher = null;
}
return byteFina;
}

public static void main(String args[]) {
DES des = new DES();
// 设置密钥
//des.setKey(“12345678”);

String str1 =“密文”;
//DES加密
String str2 = des.getEncString(str1);
String deStr = des.getDesString(str2);
System.out.println(“密文:”str2);
//DES解密
System.out.println(“明文:”deStr);
}
孤雨 2012-08-31
  • 打赏
  • 举报
回复
md5或是其他的 java都有实现 直接调用即可
keithcai 2012-08-31
  • 打赏
  • 举报
回复
md5嘛
lost_guy_in_scut 2012-08-31
  • 打赏
  • 举报
回复
找一个好点的哈希函数呗。MurmurHash似乎可以满足楼主需求。
  • 打赏
  • 举报
回复
加密吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧