如何根据一个串产生唯一的序列? 比如给一个字符串"12345678",然后基于这个串产生一个N长度的唯一串,其实就是12345678为种子。类似UUID,但是UUID好像长度一定是16位的?我想能够产生指定长度的唯一串。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找一个好点的哈希函数呗。MurmurHash似乎可以满足楼主需求。 md5或是其他的 java都有实现 直接调用即可 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); } IO流写入空格问题 怎么样在主程序打开前,展示一段LOGO,就像photoshop那样? 我在spring 源码里看到这样一段代码 问,接口可以实例化么(解决理解结帖) 如何正确得到一个String的编码是Big5还是GB2312?急!!!!! java io 的问题 ,大家帮帮初学者 java视频教程 如何在JBuilder的控件栏中通过程序加入自己的Tab页与控件 如何判断一个String的内容是否字母或数字?? 问题解决了以后,怎么给分? 如何在java程序中实现向手机发送短信息的功能 求大神救我出苦海????? 这里的for循环里的代码究竟什么意思啊
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);
}