Le Chiffrement RSA: Différence entre Java et Android

Je suis à l'aide de RSA pour crypter le nom d'utilisateur et mot de passe sur Android et déchiffrer sur le serveur (tomcat 6, java 1.6).
Android De Chiffrement:

    PublicKey pubKey = readPublicKeyFromFile(mod, ex);
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE, pubKey);
    byte[] cipherData = cipher.doFinal(data);
    return cipherData;

Java Tomcat Décryptage:

    PrivateKey pubKey = readPrivateKeyFromFile(mod, ex);
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, pubKey);
    byte[] cipherData = cipher.doFinal(data);
    return cipherData;

Si j'utilise le android partie à l'EXTÉRIEUR android (Juste dans une méthode main), il fonctionne très bien. Mais pas à l'intérieur de mon android (Émulateur). Sur de de côté de serveur j'obtiens l'erreur suivante:

javax.crypto.BadPaddingException: Blocktype mismatch: 0
    at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:311)
    at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)
    at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
    at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)

Je garde le mod et ex BigIntegers constantes, donc je ne pas les écrire dans un fichier.
Je sais qu'il y a différence entre java1.6 et java 1.5 chiffrement, de sorte que les deux sont compilé avec la version 1.6 de java.

Certaines informations de débogage:

Au cours de débogage android, et je peux voir que pubKey contient le module et l'exposant en hexadécimal. Et si je debug dans une méthode main (encore une fois le même code), je peux voir que pubKey contient le module et l'exposant décimal.

Ce que je fais mal?

Grâce

  • Double Possible: stackoverflow.com/questions/4926126/...
  • Avez-vous vraiment vous appeler clé privée pubKey? Est-ce vraiment le code ou ne tapez simplement sur la question de la mémoire?
  • Attention pour les nouveaux protocoles, d'essayer et d'utiliser padding oaep à la place. PKCS#1 est vulnérable à l'padding oracle attaques.
InformationsquelleAutor bsobat | 2011-05-20