Android jvm не поддерживает keyFactory generatePublic ()? - PullRequest
0 голосов
/ 30 декабря 2011

Все, недавно я внедрил шифрование RSA на ПК и Android. Некоторые хорошо работают на ПК (jdk1.6) , но когда я пытаюсь на Android ( Android 2.1 с jdk1.5 ), странная ошибка.

Код похож на:



    BigInteger m = m;
    BigInteger e = e;
    RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m, e);
    KeyFactory fact = KeyFactory.getInstance("RSA");

    try{
       PublicKey pubKey = fact.generatePublic(keySpec);
       return pubKey;
      } catch (Exception e) {
            throw new RuntimeException("Spurious serialisation error", e);
      }
    return null;


Проблема в PublicKey pubKey = fact.generatePublic (keySpec); , кажется, вызывает исключение, но я не могу его перехватить, даже изменив его на Throwable e . Он просто переходит на return null; , но на самом деле возвращаемое значение не равно NULL, это недопустимый Pubkey с нормальным показателем (65537) и плохим модулем (заполняется символом горы, 'ae3432a *** '.

Может кто-нибудь проверить это для меня?

1 Ответ

0 голосов
/ 30 декабря 2011

Мы используем RSA-Publickey в приложении Android 2.3.6. Мы генерируем ключи с помощью следующего кода:

// data[] is pre-filled with modulus and publicExponent
String ENCRYPTION_ALGORITHM = "RSA";

BigInteger modulus = (BigInteger) data[0];
BigInteger publicExponent = (BigInteger) data[1];

PublicKey publicKey = getKeyFactory().generatePublic(new RSAPublicKeySpec(modulus, publicExponent));
return publicKey;

private static KeyFactory getKeyFactory() {
    if (keyFactory == null) {
        try {
            keyFactory = KeyFactory.getInstance(ENCRYPTION_ALGORITHM);
        } catch (NoSuchAlgorithmException e) {
            // Algorithm is part of every Android installation. Since we do not get here under realistic
            // circumstances it is OK to crash here.
            throw new HellFrozeOverException();
        }
    }
    return keyFactory;
}

Если я правильно понял, вы делаете то же самое. Извините, что я не могу вам больше помочь ...

...