高分求教:在jsp中运行的 DES 加密和解密 JAVABEAN。要求见文章内容!!

xiaoguang0464 2004-08-30 02:10:41
在jsp中运行的 DES 加密和解密 JAVABEAN。要求如下:
1 在bean 中的加密方法在jsp 中返回两个字符串。一个是密文字符串;一个是密钥的字符串。
便于添加到数据库中。
2 在解密方法中取的密文字符串,用于解密。
本人研究了好多天都打不到想要的效果。只有求助于广大高手。急用!!!!!
希望能寄予帮助。下面是我些的代码。有时也好用,但当密文不输出的时候,也就没有了明文。
package hitbcd;
import java.security.*;
import javax.crypto.*;
import sun.misc.*;
import java.util.*;
import javax.crypto.spec.SecretKeySpec;

public class JiamiBean {
// SecretKey deskey=null;
// Vector vector=null;
String skey=null;
public JiamiBean() {

}
/////////

public String JiamiAccout(String info) {
//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish
String myinfo=info;
String jiami_str="";
//String skey="";

try {
//生成密钥
//vector=new Vector();
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();
//byte[] desEncode=deskey.getEncoded();
//javax.crypto.spec.SecretKeySpec destmp=new javax.crypto.spec.SecretKeySpec(desEncode,Algorithm);
//SecretKey mydeskey=destmp;
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE,deskey);
byte[] cipherByte=c1.doFinal(myinfo.getBytes());
BASE64Encoder base64E = new BASE64Encoder();
skey = base64E.encode(deskey.getEncoded());
jiami_str=new String (cipherByte);
// vector.clear();
//vector.add(0,jiami_str);
// vector.add(1,skey);

}
catch (java.security.NoSuchAlgorithmException e1) {e1.printStackTrace();}
catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();}
catch (java.lang.Exception e3) {e3.printStackTrace();}
return jiami_str;
}
////
public String JiemiAccout(String info) {
//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish
String jiemi_str="";
String skey=this.getString();
//(String)vector.get(1);
try {

BASE64Decoder base64D = new BASE64Decoder();
byte[] bKey = base64D.decodeBuffer(skey);
Cipher c1 = Cipher.getInstance("DES");
SecretKey deskey1 = new SecretKeySpec(bKey, "DES");
c1.init(Cipher.DECRYPT_MODE, deskey1);
byte[] clearByte=c1.doFinal(info.getBytes());
jiemi_str= new String(clearByte);

}
catch (java.security.NoSuchAlgorithmException e1) {e1.printStackTrace();}
catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();}
catch (java.lang.Exception e3) {e3.printStackTrace();}
return jiemi_str;
}

///////////
public String byte2hex(byte[] b) //二行制转字符串
{
String hs="";
String stmp="";
for (int n=0;n<b.length;n++)
{
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
public String getString(){
return skey;
}

}

...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordmanyang 2004-09-03
  • 打赏
  • 举报
回复
我现在也在做这个des我把从数据库取出的数据与原的密文与密钥比较,发现不一样了,你有没有这个问题呀
xiaoguang0464 2004-08-30
  • 打赏
  • 举报
回复
我的QQ:24404614
E:xiaoguang0464@sohu.com
自己顶!

81,092

社区成员

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

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