java中的RSA密钥对生成错误

时间:2014-03-05 06:55:33

标签: java rsa key-pair

我需要在java中生成RSA密钥对。我尝试了以下内容,

<%@page import="java.security.Key"%>
<%@page import="java.security.KeyPair"%>
<%@page import="java.security.KeyPairGenerator"%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%


        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048);
        KeyPair kp = kpg.genKeyPair();
        Key publicKey = kp.getPublic();
        Key privateKey = kp.getPrivate();
        out.println("PrivateKey:" + privateKey);
        out.println("PublicKey:" +publicKey);

    %>
</body>
 </html>

当页面在netbeans中运行时(仅此页面)发生错误。,错误:包

sun.org.mozilla.javascript.internal.regexp不存在

当整个项目运行时我得到了输出...,但生成的公钥太长了......,就像这样

PrivateKey:sun.security.rsa.RSAPrivateCrtKeyImpl@b8a7c

PublicKey:Sun RSA公钥,2048位模数:

16357206704297604671856121853158662273841275717667103178663872982510600516942159

92471768797559279747649637039251872720857162699034207744835023844213276461437235

62716346732316118850882643586149442248236190221255104694771208469870082732902270

59176928873062588804197238673756206442086637249330898308938378378066971049120606

00637770477260198883852885925396692544417880794817246467903698369172064896388091

16103893445868520394887338681032080760488563541369139420725965115593026544388053

89245256261473050095495300460611881341368409054850562520674680342153131165041561

752280363820799023393672676767368529573441046320095568301 
public exponent: 65537

我想将此公钥和私钥插入数据库..,所以它应该很小..,  请帮帮我......,

2 个答案:

答案 0 :(得分:0)

对于任何可行的安全性,RSA密钥都很大。如果您需要较小的密钥,则需要切换到对称加密(AES) - 如果适用 - 或椭圆曲线加密(ECC)。使用ECC,您仍然需要使用已知或命名的曲线,否则您的密钥仍然很大。

创建较小的RSA密钥有一个技巧:让它们使用处于已知状态的伪随机数生成器生成(并保存此状态)。然而,该解决方案依赖于实现细节;如果实现只是稍微改变,你可能会得到一个不同的密钥对,所以不建议这样做。希望我可以原谅在Stackoverflow上提及它。

答案 1 :(得分:-1)

您将密钥大小指定为2048位。根据您的需要进行修改。

更改此行

  

kpg.initialize(2048);

到你想要密钥的任何长度(数据库支持的长度)

  

kpg.initialize(length_of_key);

请查看以下初始化方法的文档:

http://docs.oracle.com/javase/7/docs/api/java/security/KeyPairGenerator.html#initialize(int)