Ho un paio di librerie, C#, PHP e Android dove tutte codificano/decodificano una stringa nello stesso modo in modo che siano tutte compatibili tra loro, cioè C# scrive e crittografa i dati in un database e PHP possono decrittografarlo e restituire la stringa originale.AES-256 e PKCS7Padding non riescono in Java
Ora ho bisogno di fare la stessa cosa con un'applicazione Java standard, quindi ho preso il codice dalla mia libreria Android e ho bisogno di librerie ma sto ottenendo un'eccezione. Per quanto ne so, il codice non era specifico per Android quindi non dovrebbe essere un problema.
Qui di seguito è la mia funzione di crittografia
public static String encrypt(String plainPasword)
{
String password = "";
try
{
SecretKeySpec key = new SecretKeySpec("hcxilkqbbhczfeultgbskdmaunivmfuo".getBytes("US-ASCII"), "AES");
IvParameterSpec iv = new IvParameterSpec("ryojvlzmdalyglrj".getBytes("US-ASCII"));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] encoded = cipher.doFinal(plainPasword.getBytes());
password = new String(Base64.encodeBase64(encoded));
}
catch (Exception ex)
{
System.err.println("Encryption Exception: " + ex.toString());
}
return password;
}
Quando chiamo Encryption.encrypt("myString");
ottengo la seguente eccezione:
Encryption Exception: java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CBC/PKCS7Padding
Come ho detto questo codice sta lavorando bene su Android e non dovrebbe fare alcuna differenza da dove proviene.
Grazie per l'aiuto che puoi fornire.
UPDATE
ho scoperto che avevo bisogno PKCS5Padding invece di 7, grazie ad un collegamento su un commento. Sono ora però ottenere la seguente eccezione:
Encryption Exception: java.security.InvalidKeyException: Illegal key size
http://stackoverflow.com/questions/10193567/java-security-nosuchalgorithmexception-cannot-find-any-provider-supporting-aes – srkavin
Grazie quando ho cercato su Google non ho trovato nulla anche se ora che ho cambiato ora mi sta dicendo che la chiave è una dimensione non valida – Boardy
Avrai bisogno dei file di criteri JCE di forza illimitata. http://deveshsharma.info/2012/10/09/fixing-java-security-invalidkeyexception-illegal-key-size-exception/ – srkavin