2010-08-25 5 views
5

J'ai vu l'exemple here. Tout va bien et je le comprends, mais il s'appuie sur la bibliothèque bounceycastle pour le fournisseur. Je ne veux pas regrouper de bibliothèques tierces supplémentaires avec mon application si je peux l'aider. Je n'ai pas besoin d'une sécurité de style fort, juste un cryptage symétrique de base pour transmettre sur le réseau. Comment puis-je faire le cryptage de base sur Android avec des bibliothèques tierces?Chiffrement de base sur Android

grâce

Répondre

5

Bien BouncyCastle est inclus dans Android, comme vous pouvez le voir si vous essayez de l'inclure vous obtiendrez: D/dalvikvm(9268): DexOpt: not verifying 'Lorg/bouncycastle/x509/extension/SubjectKeyIdentifierStructure;': multiple definitions et ainsi de suite. Cependant, tous les algorithmes ne sont pas implémentés - vous obtiendriez une exception NoSuchAlgorithmException. Dans Android 2.2 Je trouve ces à mettre en œuvre:

PBEWITHSHAAND128BITAES-CBC-BC PBEWITHSHAAND3-KEYTRIPLEDES-CBC 1.2.840.113549.1.1.7 PBEWITHSHA256AND256BITAES-CBC-BC PBEWITHSHAAND192BITAES-CBC-BC DESEDE DES 1.2.840.113549.3.7 PBEWITHSHAAND2-KEYTRIPLEDES-CBC 1.3.14.3.2.7 PBEWITHSHA256AND192BITAES-CBC-BC PBEWITHSHAAND256BITAES-CBC-BC PBEWITHSHAAND40BITRC2-CBC AES 2.16.840.1.101.3.4.1.42 PBEWITHSHA256AND128BITAES-CBC-BC 2.16.840.1.101.3.4.1.22 2.16.840.1.101.3.4.1.2

+1

Je reçois une shortbufferexception sur l'appel de doFinal lors du cryptage (en utilisant l'exemple lié) - des idées? – MalcomTucker

+0

Eh bien, l'exemple fonctionne bien sur mon Nexus one, 2.2. Et vous ne devriez pas avoir une shortbufferexception, mais vous pouvez toujours essayer de définir: byte [] cipherText = new byte [2048]; Pour voir si le cryptage fonctionne, même si vous obtiendrez des indésirables dans les impressions. –

+1

mon cipherText est beaucoup plus grand que cela - environ 3800 octets. Est-ce que le byte []. Length doit être un multiple de 16? – MalcomTucker

5

Je ne veux pas regrouper toutes les bibliothèques de tiers supplémentaires avec mon application si je peux l'aider.

Vous n'avez pas besoin de bibliothèques tierces pour utiliser javax.crypto. Il existe des exemples en ligne d'utilisation javax.crypto, tels que this et this. Si vous avez besoin d'un encodeur Base64, il y en a un dans Android 2.2, ou il existe des implémentations open source disponibles pour cela aussi.

+0

Savez-vous quels algorithmes Crypto qui prend en charge Android BC? Je sais que c'est une version paralysée de la Colombie-Britannique, mais je ne trouve pas ce qu'elle supporte vraiment. –

+0

@metalideath: Du haut de ma tête, non. En outre, quelqu'un a réorganisé BC comme org.spongycastle pour passer la version "estropiée", au cas où ce dont vous avez besoin n'est pas disponible via le paquet 'javax.crypto'. – CommonsWare