Bonjour, voilà depuis un bout de temps j’essaie de faire fonctionner le code pour crypter une phrase. Pour utiliser le code, il a été recommandé de copier les jar "local_policy.jar" et "US_export_policy.jar" dans le dossier security de jre afin que SHA-256 puisse fonctionner. Mais malgré cela j’ai une erreur dont je comprend pas vraiment le sens. vu que je pense que les paramètres fournis sont corrects.
Voilà le code (Je l’ai récupéré du site javacube)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import com.google.common.base.Charsets;  
import org.apache.commons.codec.binary.Base64;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.stereotype.Component;
 
import javax.crypto.Cipher;  
import javax.crypto.spec.SecretKeySpec;  
import java.util.Date;
 
@Component
public class CipherUtilSecret {
 
	private final Logger log = LoggerFactory.getLogger(CipherUtilSecret.class);
 
    public static final String CIPHER_ALGORITHM = "AES";
    public static final String KEY_ALGORITHM = "AES";
    public static final byte[] SECRET_KEY = "16BYTESSECRETKEY" .getBytes(Charsets.UTF_8); // exactly 16 bytes to not use JCE (Java Cryptography Extension)
 
    public String decrypt(String encryptedInput) {
        try {
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(SECRET_KEY, KEY_ALGORITHM));
            return new String(cipher.doFinal(Base64.decodeBase64(encryptedInput)), Charsets.UTF_8);
 
        } catch (Exception e) {
            log.warn(e.getMessage(), e);
            throw new RuntimeException(e);
        }
    }
 
    public String encrypt(String str) {
        try {
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(SECRET_KEY, KEY_ALGORITHM));
            return Base64.encodeBase64URLSafeString(cipher.doFinal(str.getBytes(Charsets.UTF_8)));
 
        } catch (Exception e) {
            log.warn(e.getMessage(), e);
            throw new RuntimeException(e);
        }
    }
}
et voilà l’erreur que j’ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size or default parameters
	at CipherUtilTopSecret.encrypt(CipherUtilTopSecret.java:36)
	at CipherUtilTopSecret.main(CipherUtilTopSecret.java:71)
Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
	at javax.crypto.Cipher.implInit(Cipher.java:801)
	at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
	at javax.crypto.Cipher.init(Cipher.java:1249)
	at javax.crypto.Cipher.init(Cipher.java:1186)
	at CipherUtilTopSecret.buildCipher(CipherUtilTopSecret.java:56)
	at CipherUtilTopSecret.encrypt(CipherUtilTopSecret.java:29)
	... 1 more
Quelqu’un aurait-il une petite idée?