已知公钥或私钥是一串字符串,例如: CC7AB38AA3C8873AD61CF5E818FA980D305A448554342 CD9E1F77DB8609DB9396B916D7FCB0BE75E561168D1EC A2E2B6AD14285F1CEB8ED7A8FDEE7CA37DF324D792F14 D3D3C588B8A6569A8B62AE62E6D44F51461738810F2 ...
如何生成RSAPublicKey或RSAPrivateKey.
如何生成RSAPublicKey或RSAPrivateKey.
解决方案 »
- 我想做一个自动登陆器,需要学习些什么呢?
- 字符串按参数名称格式化类
- MANIFEST.MF 是干什么用的? 通过eclipse 打包需要注意什么?
- resultset如何取得第一个记录的值与最后一个记录的值以及总数
- InetAddress.getLocalHost();在域中为什么就不行了呢?各位指点啊
- 请推荐JAVA的算法和数据结构的书
- 如何获得一个变量长度的数组
- 请问大家做GUI的 SWING组件添加 和 界面布局 时候都是自己写代码吗?还是用JBUILDER这种IDE啊?
- 在Applet中如何打开一个超链接?
- web start主要的用途是什么?
- Exception in thread "main" java.io.IOException
- 没分,怎么办啊
/** *//**
* 生成2048位的RSA公匙和私匙
*/
public static void generator(
String privateKeyFileName) throws Exception
{
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
PublicKey puk = kp.getPublic();
PrivateKey prk = kp.getPrivate();
FileOutputStream fos1 = new FileOutputStream("mypub.key");
FileOutputStream fos2 = new FileOutputStream("mypri.key");
ObjectOutputStream oos1 = new ObjectOutputStream(fos1);
ObjectOutputStream oos2 = new ObjectOutputStream(fos2);
oos1.writeObject(puk);
oos2.writeObject(prk);
oos1.close();
oos2.close();
fos1.close();
fos2.close();
System.out.println("公匙生成成功!公匙文件为mypub.key");
System.out.println("私匙生成成功!私匙文件为mypri.key");
/** *//**
* 解密方法
*
* @param String
* 私匙文件
* @param String
* 加密后的字符串
* @return String 解密后的字符串
*/
public String RSA2S(String fileName, String rsaStr) throws Exception
{
// 获取私匙
RSAPrivateKey rsaprk = RSAKey.getPrivateKey(fileName);
// 获取私匙参数d,n
BigInteger d = rsaprk.getPrivateExponent();
BigInteger n = rsaprk.getModulus();
// 获取密文
BigInteger c = new BigInteger(rsaStr);
// 解密计算
BigInteger m = c.modPow(d, n);
// 转换成String
byte[] ctext = m.toByteArray();
return new String(ctext);
}
}