これが私がキーペアを生成する方法です:
private void generateKeyPair() throws NoSuchAlgorithmException, IOException {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
// kpg.initialize(1024);
kpg.initialize(512);
KeyPair kp = kpg.genKeyPair();
System.out.println("Generated Key Pair");
dumpKeyPair(kp);
}
以下は、トークンとトークン署名を作成します。
public String makeTokenSignature(String message) throws GeneralSecurityException {
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initSign(getPrivateKey());
signature.update(message.getBytes());
byte[] signatureValue = signature.sign();
return encodeBASE64(signatureValue);
}
public String createTokenString(String userName) {
long currentTime = System.currentTimeMillis();
String tokenString = userName + "some other values..";
return tokenString;
}
バリデーターコードは次のとおりです。
public boolean isValidTokenSignature(String message, byte[] signatureValue) throws GeneralSecurityException {
Signature signature2 = Signature.getInstance("SHA1withRSA");
signature2.initVerify(getPublicKey());
signature2.update(message.getBytes());
return signature2.verify(signatureValue);
}
私が見る問題:userName.length> = 16 && userName <18の場合、検証コードは正常に機能します。キーサイズがuserNameの許容長にどのように影響するか教えてもらえますか?GenerateKeyPairコードでkpg.initialize(1024)を使用していたとき、ユーザー名の下限は18文字でした。