KeyPairGenerator in jdk1.5 differs from jdk1.4
I have been generating RSA keys in jdk1.4 for quite some time. Instead of storing the keys I have used the fact that the same key is generated each time as long as the input is the same. However, when doing this with jdk1.5 the results differ from what was produced in jdk1.4.
The following test case illustrates my problem:
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import junit.framework.TestCase;
publicclass TestKeyPairGeneratorextends TestCase{
publicvoid testKeyPairGenerator()throws Exception{
SecureRandom sr =new SecureRandom(newbyte[]{1,2,3,4,5});
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
gen.initialize(512, sr);
KeyPair keyPair = gen.generateKeyPair();
BigInteger priv = ((RSAPrivateKey)keyPair.getPrivate()).getPrivateExponent();
BigInteger mod = ((RSAPrivateKey)keyPair.getPrivate()).getModulus();
BigInteger pub = ((RSAPublicKey) keyPair.getPublic()).getPublicExponent();
if ("1.4".equals(System.getProperty("java.specification.version"))){
assertEquals("Public exponent differs", pub.toString(),"65537");
assertEquals("Modulus differs", mod.toString(),"10168453279863611160684257564658874979068032194153364974263061470417211558176431777315758266813304475505635474224640023491056357535644661964115218380088441");
assertEquals("Private exponent differs", priv.toString(),"3404586269131135384575044078021723509859923866461804593287064678660373120848696022530176891976025148660340997240242411014550229151222400914349583686738481");
}else{
assertEquals("Public exponent differs", pub.toString(),"65537");
assertEquals("Modulus differs", mod.toString(),"7548301025769813426531900568079274012258970653013576047079677969183673491810801374387356423765688204945000059232699002575691694838210921897180095000416309");
assertEquals("Private exponent differs", priv.toString(),"3535793417307894813328391832697035764565636817017314968175214519675444291394089637955390126352392044807601556393533178419076862429856371343196070121492705");
}
}
}
Anyone knows why the result is not the same in jdk1.5 as in jdk1.4?
thanks,
Tomas

