2010-09-22 28 views
1

Est-ce que quelqu'un peut me diriger dans la bonne direction? Je ne sais pas pourquoi j'obtiens une exception d'argument illégal en décryptant une clé. Cela avait l'habitude de travailler plus tôt. Voici la pile de pile.Exception d'argument illicite lors du décryptage avec Crypto Bouncy Castle

java.lang.IllegalArgumentException: DES key too long - should be 8 bytes 
    at org.bouncycastle.crypto.engines.DESEngine.init(Unknown Source) 
    at org.bouncycastle.crypto.modes.CBCBlockCipher.init(Unknown Source) 
    at org.bouncycastle.crypto.BufferedBlockCipher.init(Unknown Source) 
    at com.project.util.Encryptor.decrypt(Encryptor.java:90) 
    at com.project.util.Encryptor.decryptString(Encryptor.java:103) 
    at com.project.util.EncryptionUtil.getdecryptedlicense(EncryptionUtil.java:145) 
    at com.project.util.EncryptionUtil.<clinit>(EncryptionUtil.java:52) 
    at com.project.ebiz.security.jaas.SQLLoginModule.login(SQLLoginModule.java:176) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) 
+2

Je ne peux pas imaginer qu'un message d'erreur soit plus clair. –

Répondre

0

Je devrais être un lecteur d'esprit puisque vous ne montrez aucun code du tout. Je vais créer le WAG suivant:

Vous utilisez une chaîne de caractères de 8 longs pour stocker une clé codée en dur et en utilisant la méthode String.getBytes() pour le convertir en tableau d'octets. Cette méthode utilise le jeu de caractères par défaut de la plateforme, presque toujours un grand non-non. Sur les plates-formes que vous avez testées, le jeu de caractères par défaut est quelque chose comme US-ASCII qui convertit toujours un caractère en un octet. Sur la plate-forme où vous rencontrez des problèmes, le jeu de caractères par défaut est une variante UTF-16.

C'est mon avis.