已知公钥或私钥是一串字符串,例如: CC7AB38AA3C8873AD61CF5E818FA980D305A448554342 CD9E1F77DB8609DB9396B916D7FCB0BE75E561168D1EC A2E2B6AD14285F1CEB8ED7A8FDEE7CA37DF324D792F14 D3D3C588B8A6569A8B62AE62E6D44F51461738810F2 ...
如何生成RSAPublicKey或RSAPrivateKey.
如何生成RSAPublicKey或RSAPrivateKey.
解决方案 »
- java怎么取得本地计算机的任务管理器的应用程序列表
- 出个基础题做做(一道面试题目)
- 如何在主程序中得到主程序生成的JFrame中函数的返回值?
- 关于多线程的疑惑。
- 有一个用eclipse写的添加信息的动态网页,用了三个jsp和两个class,需要改成删除信息的,怎么办啊?急求
- 解析文件,为什么出现死循环?filePointer 的值总是小于 length
- 高分求c#和java精彩文档
- 上回的问题还有一点点不清楚,希望各位ggjj再帮一次忙~:)
- 如何让IE6的JAVA虚拟机支持JDK1.2?
- GregorianCalendar为什么会是空的呢?
- 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);
}
}