java中的使用RSA算法进行公钥加密私钥解密
来源:互联网 发布:数据库模型设计 编辑:程序博客网 时间:2024/05/18 02:21
一个比较简单的实现:一个三个类KeyGenerater生成公钥私钥对,Signaturer类使用私钥签名,SignProvider用公钥验证。公钥和私钥使用Base64加密Base64这个类也在博客里面
public class KeyGenerater {
private byte[] priKey;
private byte[] pubKey;
public void generater() {
try {
java.security.KeyPairGenerator keygen = java.security.KeyPairGenerator
.getInstance("RSA");
SecureRandom secrand = new SecureRandom();
secrand.setSeed("syj".getBytes()); // 初始化随机产生器
keygen.initialize(1024, secrand);
KeyPair keys = keygen.genKeyPair();
PublicKey pubkey = keys.getPublic();
PrivateKey prikey = keys.getPrivate();
pubKey = Base64.encodeToByte(pubkey.getEncoded());
priKey = Base64.encodeToByte(prikey.getEncoded());
System.out.println("pubKey = " + new String(pubKey));
System.out.println("priKey = " + new String(priKey));
} catch (java.lang.Exception e) {
System.out.println("生成密钥对失败");
e.printStackTrace();
}
}
public byte[] getPriKey() {
return priKey;
}
public byte[] getPubKey() {
return pubKey;
}
}
public class Signaturer {
/**
*
* Description:数字签名
*
* @param priKeyText
* @param plainText
* @return
* @author 孙钰佳
* @since:2007-12-27 上午10:51:48
*/
public static byte[] sign(byte[] priKeyText, String plainText) {
try {
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64
.decode(priKeyText));
KeyFactory keyf = KeyFactory.getInstance("RSA");
PrivateKey prikey = keyf.generatePrivate(priPKCS8);
// 用私钥对信息生成数字签名
java.security.Signature signet = java.security.Signature
.getInstance("MD5withRSA");
signet.initSign(prikey);
signet.update(plainText.getBytes());
byte[] signed = Base64.encodeToByte(signet.sign());
return signed;
} catch (java.lang.Exception e) {
System.out.println("签名失败");
e.printStackTrace();
}
return null;
}
}
public class SignProvider {
private SignProvider() {
}
/**
*
* Description:校验数字签名,此方法不会抛出任务异常,成功返回true,失败返回false,要求全部参数不能为空
*
* @param pubKeyText
* 公钥,base64编码
* @param plainText
* 明文
* @param signTest
* 数字签名的密文,base64编码
* @return 校验成功返回true 失败返回false
* @author 孙钰佳
* @since:2007-12-27 上午09:33:55
*/
public static boolean verify(byte[] pubKeyText, String plainText,
byte[] signText) {
try {
// 解密由base64编码的公钥,并构造X509EncodedKeySpec对象
java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(
Base64.decode(pubKeyText));
// RSA对称加密算法
java.security.KeyFactory keyFactory = java.security.KeyFactory
.getInstance("RSA");
// 取公钥匙对象
java.security.PublicKey pubKey = keyFactory
.generatePublic(bobPubKeySpec);
// 解密由base64编码的数字签名
byte[] signed = Base64.decode(signText);
java.security.Signature signatureChecker = java.security.Signature
.getInstance("MD5withRSA");
signatureChecker.initVerify(pubKey);
signatureChecker.update(plainText.getBytes());
// 验证签名是否正常
if (signatureChecker.verify(signed))
return true;
else
return false;
} catch (Throwable e) {
System.out.println("校验签名失败");
e.printStackTrace();
return false;
}
}
}
- java中的使用RSA算法进行公钥加密私钥解密
- java中的使用RSA算法进行公钥加密私钥解密
- java中的使用RSA算法进行公钥加密私钥解密
- C#使用RSA进行私钥加密公钥解密
- C#使用RSA进行私钥加密公钥解密
- java 使用RSA算法进行加密和解密
- Python 进行RSA私钥加密,公钥解密
- java使用RSA算法加密解密
- RSA公钥加密私钥解密--jsp加密,java解密
- 公钥加密-私钥解密(RSA)
- Java中利用RSA算法进行加密解密
- RSA加密解密算法Java
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- Java-web下使用RSA进行加密解密操作
- Java-web下使用RSA进行加密解密操作
- C#使用私钥进行RSA加密
- RSA加密:Windows Phone 公钥加密,Java私钥解密
- JAVA 获取RSA非对称加密,私钥加密、公钥解密
- 不要急于求成,不要意气用事,注意冷静处理,注意平常心,注意相应的节奏,细工慢活也能创造出好成绩。--2008年1月1日,对过去一年的总结,也是对新的一年的期望!!!
- 李彦宏:中国大多数企业没认识到搜索的价值
- MSCD software disk for win vista龙帝国vista 软件光盘合集
- C++的一些免费库
- 用C语言模拟面向对象编程(上)
- java中的使用RSA算法进行公钥加密私钥解密
- c++中用户头文件的冲突问题。
- 2007年个人总结
- 如何杀掉带锁的Oracle进程
- WebLogic81的SSL配置
- 中缀转后缀
- 用java实现浏览器
- 2007年过去了,我很怀念她!
- Leo FC 模拟器 更新