J'utilise les éléments suivants dans une application Android et une application Java autonome:
Cipher cipher = Cipher.getInstance("AES/PKCS1Padding");
3 Réponses :
Réponse courte:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Dans mon cas, j'appelle un chiffrement.Unupdate quand il aurait dû être cipher.dofinal.
Une autre "réponse courte", mais je pense que AES-GCM est plus sécurisée que le mode CBC et qui existe depuis quelques années, cependant, si vous souhaitez utiliser dans Android, vous devez inclure spongycastle
java.security.nosuchalgorithMException: AES / GCM / NOPADDING SecretyCactory Non disponible Je reçois cette erreur
Voici comment je l'ai fait:
keyGenerator.init(new
KeyGenParameterSpec.Builder(KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT |
KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setUserAuthenticationRequired(true)
.setEncryptionPaddings(
KeyProperties.ENCRYPTION_PADDING_PKCS7)
.build());
cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7);
Essayez ce chiffrement chiffre = cipher.getinstance ("AES / CBC / ISO10126PADDING", "JSAFEJCE");
Blast n'a pas fonctionné: java.security.nosuchProviderexception: Aucun fournisseur de ce type: Jsafejce
On dirait que vous essayez d'écrire du code crypto en jetant des morceaux de code aléatoires au mur et en espérant quelque chose de bâtonnets. En utilisant les API de bas niveau, vous êtes présumé pour comprendre des choses comme la différence entre la cryptographie symétrique et asymétrique, les différences entre les modes de chiffrement block et les schémas de rembourrage, les IV, etc. Vous ne semblez comprendre aucun de ceux-ci. Peut-être que c'est là que vous devriez commencer.