在java中生成RSA密钥对时出错

在java中生成RSA密钥对时出错,java,rsa,key-pair,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

我需要用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>
我想将这个公钥和私钥插入数据库..,所以它应该很小。。,
请帮助我……,

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

换行

kpg.初始化(2048)

您希望密钥的长度(数据库支持的长度)

初始化(密钥的长度)

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


根据定义,RSA密钥对于任何可行的安全性来说都是很大的。如果需要较小的密钥,则需要切换到对称加密(AES)(如果合适)或椭圆曲线加密(ECC)。使用ECC时,您仍然需要使用已知或命名的曲线,否则您的关键点仍然很大


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

直接回答,尽管我想知道为什么您的数据库需要这么小。普通的服务器应该处理这种大小的数据而不会有太多麻烦。这与加密代码完全无关。您可能需要一个单独的问题并发布整个stacktrace。检查以查看有关安全密钥大小的更多信息。512位对您来说可能太大,但肯定不安全。
16357206704297604671856121853158662273841275717667103178663872982510600516942159

92471768797559279747649637039251872720857162699034207744835023844213276461437235

62716346732316118850882643586149442248236190221255104694771208469870082732902270

59176928873062588804197238673756206442086637249330898308938378378066971049120606

00637770477260198883852885925396692544417880794817246467903698369172064896388091

16103893445868520394887338681032080760488563541369139420725965115593026544388053

89245256261473050095495300460611881341368409054850562520674680342153131165041561

752280363820799023393672676767368529573441046320095568301 
public exponent: 65537