0

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 が存在しません

プロジェクト全体が実行されているときに出力を取得しました...しかし、生成された公開鍵が長すぎます...、このように

秘密鍵:sun.security.rsa.RSAPrivateCrtKeyImpl@b8a7c

PublicKey:Sun RSA 公開鍵、2048 ビット係数:

16357206704297604671856121853158662273841275717667103178663872982510600516942159

92471768797559279747649637039251872720857162699034207744835023844213276461437235

62716346732316118850882643586149442248236190221255104694771208469870082732902270

59176928873062588804197238673756206442086637249330898308938378378066971049120606

00637770477260198883852885925396692544417880794817246467903698369172064896388091

16103893445868520394887338681032080760488563541369139420725965115593026544388053

89245256261473050095495300460611881341368409054850562520674680342153131165041561

752280363820799023393672676767368529573441046320095568301 
public exponent: 65537

この公開鍵と秘密鍵をデータベースに挿入したいのですが..,小さいはずです..,助けてください....,

4

2 に答える 2

0

RSA キーは、実行可能なセキュリティの定義上、サイズが大きくなります。より小さな鍵が必要な場合は、対称暗号化 (AES) (適切な場合) または楕円曲線暗号 (ECC) に切り替える必要があります。ECC では、既知の曲線または名前付きの曲線を使用する必要があります。そうしないと、キーがまだ大きくなります。

より小さな RSA キーを作成するためのトリックがあります。既知の状態で疑似乱数ジェネレーターを使用して生成させます (そして、この状態を保存するだけです)。ただし、このソリューションは実装の詳細に依存しています。実装がほんのわずかしか変更されない場合、別のキー ペアを取得する可能性があるため、これはお勧めしません。願わくば、Stackoverflow ですべて言及したことを許していただければ幸いです。

于 2014-03-05T08:36:43.157 に答える
-1

キー サイズを 2048 ビットとして指定しています。必要に応じて変更します。

この行を変更

kpg.initialize(2048);

キーの長さは何でも構いません(データベースがサポートする長さは何でも)

kpg.initialize(length_of_key);

以下の初期化メソッドのドキュメントを確認してください。

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

于 2014-03-05T07:01:18.940 に答える