天行健,君子以自强不息
BlogJava
首页
新随笔
联系
聚合
管理
12 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
公告
记录java生活点滴,即为查阅,亦可共享
mailto:
cafebabe@yeah.net
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
2009年8月 (1)
2008年4月 (2)
2008年3月 (9)
搜索
最新评论
1. re: Hibernate 一对多查询的记录重复问题
直接用select distinct 对象名 +后面的一堆就可以了
--秦
2. re: java虚拟机[未登录]
谢谢!
--HH
阅读排行榜
1. Hibernate 一对多查询的记录重复问题(3583)
2. java 加密算法 DSA 实现代码(946)
3. java 加密算法 RSA 实现代码(833)
4. Inside The JVM Part2: java如何实现安全性(574)
5. java 加密算法 DES 实现代码(467)
评论排行榜
1. java虚拟机(1)
2. Hibernate 一对多查询的记录重复问题(1)
3. Tomcat 简介(0)
4. 【转载】JSP乱码解决方案(0)
5. java虚拟机参数(0)
java 加密算法 RSA 实现代码
package
com.yill;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.ObjectInputStream;
import
java.io.ObjectOutputStream;
import
java.security.InvalidKeyException;
import
java.security.Key;
import
java.security.KeyPair;
import
java.security.NoSuchAlgorithmException;
import
java.security.PrivateKey;
import
java.security.PublicKey;
import
java.security.SecureRandom;
import
javax.crypto.BadPaddingException;
import
javax.crypto.Cipher;
import
javax.crypto.IllegalBlockSizeException;
import
javax.crypto.NoSuchPaddingException;
import
sun.security.rsa.RSAKeyPairGenerator;
public
class
YillRSA
{
/** */
/**
*
@param
args
*/
public
static
void
main(String[] args)
{
generateKeyPair();
byte
[] info
=
"
http://www.blogjava.net/yill/
"
.getBytes();
System.out.println(
"
Original info is
"
+
new
String(info));
System.out.println(
"
encrypted info is
"
+
new
String(encode(info)));
System.out.println(
"
Decrypted info is
"
+
new
String(decode(encode(info))));
}
public
static
void
generateKeyPair()
{
RSAKeyPairGenerator kg
=
new
RSAKeyPairGenerator();
kg.initialize(
1024
,
new
SecureRandom());
KeyPair keyPair
=
kg.generateKeyPair();
PrivateKey privateKey
=
keyPair.getPrivate();
writeKeyToDisk(
"
C:\\privateKey.dat
"
, privateKey);
PublicKey publicKey
=
keyPair.getPublic();
writeKeyToDisk(
"
C:\\publicKey.dat
"
, publicKey);
}
public
static
byte
[] encode(
byte
[] info)
{
PrivateKey privateKey
=
(PrivateKey) readKeyFromDisk(
"
C:\\privateKey.dat
"
);
try
{
Cipher cipher
=
Cipher.getInstance(
"
RSA
"
);
cipher.init(Cipher.ENCRYPT_MODE, privateKey,
new
SecureRandom());
return
cipher.doFinal(info);
}
catch
(NoSuchAlgorithmException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(NoSuchPaddingException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(InvalidKeyException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalBlockSizeException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(BadPaddingException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
return
new
byte
[
0
];
}
public
static
byte
[] decode(
byte
[] info)
{
PublicKey publicKey
=
(PublicKey) readKeyFromDisk(
"
C:\\publicKey.dat
"
);
try
{
Cipher cipher
=
Cipher.getInstance(
"
RSA
"
);
cipher.init(Cipher.DECRYPT_MODE, publicKey,
new
SecureRandom());
return
cipher.doFinal(info);
}
catch
(NoSuchAlgorithmException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(NoSuchPaddingException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(InvalidKeyException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalBlockSizeException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(BadPaddingException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
return
new
byte
[
0
];
}
private
static
void
writeKeyToDisk(String file, Key key)
{
try
{
ObjectOutputStream out
=
new
ObjectOutputStream(
new
FileOutputStream(file));
out.writeObject(key);
}
catch
(FileNotFoundException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
private
static
Key readKeyFromDisk(String file)
{
try
{
ObjectInputStream in
=
new
ObjectInputStream(
new
FileInputStream(
file));
return
(Key) in.readObject();
}
catch
(FileNotFoundException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(ClassNotFoundException e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
return
null
;
}
}
posted on 2008-03-19 00:08
yill
阅读(833)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © yill