오류를 수정하려면 더 큰 키 크기를 사용해야합니다. 예를 들어, SHA 512 비트가 선택되면 키는 1024 비트 일 수 있습니다. 그러나 같은 길이 (512) 또는 더 작은 길이의 키로 실패 할 것입니다.
BouncyCastle은 사용할 수없는 오류 메시지를 표시합니다. 그러나 표준 라이브러리는 제대로 작동합니다. 그것들을 비교해보십시오 :
// using a 512 bit key here
// leads to this error message if Sun's standard provider is used
Signature sig = Signature.getInstance("SHA512withRSA", "SunRsaSign");
rsa.initSign(privateKey);
rsa.update(data);
rsa.sign();
java.security.InvalidKeyException: Key is too short for this signature algorithm
at sun.security.rsa.RSASignature.initCommon(RSASignature.java:129)
at sun.security.rsa.RSASignature.engineInitSign(RSASignature.java:111)
at sun.security.rsa.RSASignature.engineInitSign(RSASignature.java:101)
at java.security.Signature$Delegate.engineInitSign(Signature.java:1127)
at java.security.Signature.initSign(Signature.java:511)
// using a 512 bit key here
// leads to this error message if the BounceCastle provider is used
Signature sig = Signature.getInstance("SHA512withRSA", "BC");
...
java.security.SignatureException: java.lang.IllegalArgumentException: input data too large
at org.bouncycastle.jce.provider.JDKDigestSignature.engineSign(Unknown Source)
at java.security.Signature$Delegate.engineSign(Signature.java:1160)
at java.security.Signature.sign(Signature.java:553)
당신은 어떤 수업을 듣고 있습니까? 당신의 물건은 어떤 크기입니까? –