Вот мой фрагмент кода:
int eValue = 79, t;
int bitLength = 1024; // KeySize
BigInteger e = new BigInteger(Integer.toString(eValue));
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(bitLength);
KeyPair kp = kpg.generateKeyPair();
KeyFactory kfactory = KeyFactory.getInstance("RSA");
RSAPublicKeySpec kspec = (RSAPublicKeySpec) kfactory.getKeySpec(kp.getPublic(),
RSAPublicKeySpec.class);
System.out.println("Byte Length is : " + kspec.getModulus().toByteArray().length);
String testString;
try {
testString = new String (kspec.getModulus().toByteArray() , "ISO-8859-1");
StringBuilder tt = new StringBuilder();
for(t =0 ; t< testString.length() ; t++)
{
tt.append((int) testString.charAt(t)+",");
}
String encryptedBytes = tt.toString();
System.out.println("Mod is : " + encryptedBytes);
}catch (Exception ex) {
// TODO: handle exception
}
А вот и вывод:
Byte Length is : 129
Mod is : 0,190,193,141,230,128,124,6,201,254,135,66,162,65,147,160,76,160,181,7,141,113,8,57,193,185,206,42,125,9,169,209,124,74,233,151,10,128,180,35,24,206,213,32,48,4,39,178,60,10,249,151,50,218,220,11,124,72,64,148,135,251,133,23,54,171,25,202,157,28,21,39,239,234,48,56,79,36,127,59,203,108,189,232,216,231,237,237,90,253,19,118,29,18,142,126,254,193,189,82,15,126,139,136,45,31,133,242,187,81,62,52,5,23,11,217,171,233,7,137,115,30,93,206,236,31,196,111,153
Для 1024-битного модуля ключа длина должна быть 128 байт, а для 2048 - 256, но я получаю дополнительный байт (добавление 0 всегда в самом первом байте), нужна помощь, чтобы восстановить это ..
Спасибо,
Паван