解密后的密文有时候时空字符串那样子?解密用getMD50fStr(),会有空字符吗?从来没碰到那个算法如果会生成空字符的话,还能叫加密吗?不会是搂主显示时的问题吧。
解决方案 »
- tomcat5.0可以开发javamail吗?
- 关于POI导出Excel问题,我基本完成,就差一点点
- ls.add() 的疑问
- getOutputStream() has already been called for this response
- 请问各位,你读一本java方面的技术书籍需要多少时间(多少天,每天多少小时)?如"JSP编程指南","精通EJB".....
- 请教JSP中 hidden传值问题....
- 奇怪又郁闷的问题
- 求助: 用java 来实现文件复制 !
- 如何在页面中设计菜单
- (高分求助)请问,那里有软件开发的<设计文档>
- 一个有关客户端打印报表的问题?
- 关于checkbox返回值的问题
请把源码给我可以吗?
[email protected]
des 加密和解密 和 md5的源码
import javax.crypto.*; public class WriteOffDES {
private String Algorithm = "DES"; public WriteOffDES() {
init();
} public void init() {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
keygen = KeyGenerator.getInstance(Algorithm);
deskey = keygen.generateKey();
c = Cipher.getInstance(Algorithm);
}
catch(NoSuchAlgorithmException ex) {ex.printStackTrace();}
catch(NoSuchPaddingException ex) {ex.printStackTrace();}
} public byte[] encrypt(String e) {
try {
c.init(Cipher.ENCRYPT_MODE, deskey);
cipherByte = c.doFinal(e.getBytes());
}
catch(java.security.InvalidKeyException ex){ex.printStackTrace();}
catch(javax.crypto.BadPaddingException ex){ex.printStackTrace();}
catch(javax.crypto.IllegalBlockSizeException ex){ex.printStackTrace();} return cipherByte;
} public String decrypt(byte[] d) {
try {
c.init(Cipher.DECRYPT_MODE, deskey);
cipherByte = c.doFinal(d);
}
catch(java.security.InvalidKeyException ex){ex.printStackTrace();}
catch(javax.crypto.BadPaddingException ex){ex.printStackTrace();}
catch(javax.crypto.IllegalBlockSizeException ex){ex.printStackTrace();} return (new String(cipherByte));
} public String byteTohex(byte[] b) {
String str = "";
String stmp = "";
for(int n=0;n<b.length;n++) {
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if(stmp.length()==1) str = str + "0" + stmp;
else str = str + stmp;
if(n<b.length-1) str = str + ":";
}
return str.toUpperCase();
} private KeyGenerator keygen;
private SecretKey deskey;
private Cipher c;
private byte[] cipherByte;
} 附运用方法:
<%--TestDES.jsp--%> <%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="DES" scope="page" class="com.pechinsoft.util.WriteOffDES" />
<html>
<head><title>TestDES File</title></head> <body bgcolor="#FFFFFF">
<div align="center"><center>
<%
String Num = request.getParameter("Num");
if(Num==null || Num.equals("")) {
%>
<form name="form" action="TestDES.jsp" method="post">
<input type="text" name="Num" size="25" value=""/>
<input type="submit" name="button" value=" 确定 "/>
</form>
<%
}else{
out.println("加密前的数据:"+Num +"<br/>");
out.println("加密后的数据:"+DES.encrypt(Num) +"<br/>");
out.println("解密后的数据:"+DES.decrypt(DES.encrypt(Num)) +"<br/>");
}
%>
</center></div>
</body>
</html>
我用的的des 对帐号加密,但为什么每次的密文(或许我用了64 位编码)都不同,想用户登陆的时候比对密文。怎么解决?