Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java Security  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 请问这种加密有什么实际意义?
focus





发贴: 42
积分: 2
于 2006-08-03 15:21 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list

package security;

/**
*安全程序 DESede/DES测试
*/
import java.security.*;
import javax.crypto.*;

public class Testdes {

public static void main(String[] args){

Testdes my=new Testdes();
my.run();
}

public void run() {

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

try {

//生成密钥
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();

//加密
System.out.println("加密前的二进串:"+byte2hex(myinfo.getBytes()));
System.out.println("加密前的信息:"+myinfo);

Cipher c1 = Cipher.getInstance(Algorithm);

//用密钥来加密,方式:加密模式
c1.init(Cipher.ENCRYPT_MODE,deskey);

byte[] cipherByte=c1.doFinal(myinfo.getBytes());

System.out.println("加密后的二进串:"+byte2hex(cipherByte));

//解密
c1 = Cipher.getInstance(Algorithm);

//用密钥来解密,方式:解密模式
c1.init(Cipher.DECRYPT_MODE,deskey);

byte[] clearByte=c1.doFinal(cipherByte);

System.out.println("解密后的二进串:"+byte2hex(clearByte));
System.out.println("解密后的信息:"+(new String(clearByte)));

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

}

//二进制转字符串
//把二进制数组转换成十六进制串,用:号隔开
//一个字节(8位)对应于一个两位的十六进制数
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();

}

}

运行结果:
加密前的二进串Big Smile2:AA:BCBig Smile3:C3Big SmileC:B5:C4Big Smile0:C5:CF:A2
加密前的信息:要加密的信息
加密后的二进串:88:78:8A:6E:EB:38:7A:37:CE:EDBig SmileA:39:B0:43:A4:6E
解密后的二进串Big Smile2:AA:BCBig Smile3:C3Big SmileC:B5:C4Big Smile0:C5:CF:A2
解密后的信息:要加密的信息
问题:
用的是密钥加密,解密.
而密钥的生成方法如下:
//生成密钥
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();
关于这个方法誰都可以用,因此誰都可以把通过该密钥加密过的文件解密.
那这个程序还有什么意义呢?
小弟初识security,也是头一次听说密钥,问题肤浅,请大虾们别见笑.




请求JAVA学习方向?????

话题树型展开
人气 标题 作者 字数 发贴时间
20314 请问这种加密有什么实际意义? focus 2359 2006-08-03 15:21
16556 Re:请问这种加密有什么实际意义? menzy 60 2006-08-04 09:06
17255 Re:请问这种加密有什么实际意义? focus 4827 2006-08-04 20:16
16695 Re:请问这种加密有什么实际意义? menzy 41 2006-08-07 09:30
16773 Re:请问这种加密有什么实际意义? focus 7104 2006-08-08 12:08
16577 Re:请问这种加密有什么实际意义? menzy 12 2006-08-09 10:04
19355 Re:请问这种加密有什么实际意义? focus 8 2006-08-10 17:35

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923