Maison Java javaDidacticiel Comment mettre en œuvre le cryptage AES ?

Comment mettre en œuvre le cryptage AES ?

Jun 20, 2017 pm 02:48 PM
加密

package util;

importer java.io.UnsupportedEncodingException;
importer java.security.InvalidKeyException;
importer java.security.NoSuchAlgorithmException;
importer java.security.SecureRandom;
importer javax.crypto.BadPaddingException;
importer javax.crypto.Cipher;
importer javax.crypto.IllegalBlockSizeException;
importer javax.crypto.KeyGenerator;
importer javax.crypto.NoSuchPaddingException;
importer javax.crypto.SecretKey;
importer javax.crypto.spec.SecretKeySpec;
importer org.apache.tomcat.util.codec.binary.Base64;

/**
*
* @auteur Administrateur
*
*/
public class AES {

// 加密
  public static String Encrypt(String sSrc, String sKey) lève une exception {
       if (sKey == null) {
System.out.print("Key为空null");
           return null;
       }
         // 判断Key是否为16位
       if (sKey.length() != 16) {
           System.out.print("Key长度不是16位");
           return null;
       >
       byte[] raw = sKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
       cipher.init( Cipher.ENCRYPT_MODE, skeySpec);
       byte[] chiffré = cipher.doFinal(sSrc.getBytes("utf-8"));

return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
   }

// Déchiffrer > Le décryptage de chaîne statique publique (String SSRC, String Skey) lève une exception {
Essayez {
// Juger si la clé est correcte
if (SKEY == NULL) { System.out.print("Key is null");
return null;
}
// Déterminer si la clé est de 16 bits
if (sKey.length () != 16) {
          System.out.print("La longueur de la clé n'est pas de 16 bits");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher. getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec );
byte[] chiffré1 = new Base64().decode(sSrc);//Déchiffrer d'abord avec base64
                                                                                                                                       en utilisant  base64         en utilisant           en utilisant ' ' s ' ' en utilisant 's ' ' t ‐ ‐ ‐ d byte[] original = cipher.doFinal(encrypted1);  
                  String(original,"utf-8");
return originalString;
} catch (Exception e) {
System.out.println(e.toString());
return null;
}
      } catch (Exception ex ) {
          System.out.println(ex.toString());
              return null; 🎝> */
public static byte[] encrypt (Contenu de la chaîne, Mot de passe de la chaîne) {
                                                          kgen. init(128, new SecureRandom (password.getBytes())); ​​​SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES") ;
Cipher cipher = Cipher.getInstance("AES");
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE , key);// Initialisation
              byte[] result = cipher.doFinal(byteContent) ; {
e.printStackTrace();
        } catch (NoSuchPaddingException e) {                             e.printStackTrace(); e.printStackTrace();
} catch (UnsupportedEncodingException e) {
                      e.printStackTrace(                                                                                                                                                                              e.printStackTrace();                   e.printStackTrace();  
           } catch (BadPaddingException e) {  
                  e.printStackTrace();  
           }  
           return null ;  
   }  
   /**Décryptage
* @param content Contenu à décrypter
* @param password Clé de décryptage
* @return
*/  
   public static byte[] déchiffrer (octet[] contenu, mot de passe chaîne) {  
           essayer {  
                    KeyGenerator kgen = ator.getInstance(" AES");  
                    kgen.init(128, new SecureRandom(password.getBytes()));  
                    SecretKey secretKey = kgen.generateKey();  
                    byte[] enCodeFormat = secretKey.getEncoded();  
                    Clé SecretKeySpec = new SecretKeySpec(enCodeFormat, "AES");              
                    Cipher cipher = Cipher.getInstance("AES");// 
                   byte[] result = cipher.doFinal(content );  
                   retourner le résultat ; // 加密  
           } catch (NoSuchAlgorithmException e) {  
                   e.printStackTrace();  
           } catch (NoSuchPaddingException e) {  
                  e.printStackTrace();  
           } catch (InvalidKeyException e) {  
                  e.printStackTrace();  
           } catch (IllegalBlockSizeException e) {  
                   e.printStackTrace();  
           } catch (BadPaddingException e) {  
                  e.printStackTrace();  
           }  
           return null ;  
   }  
   /**Convertir binaire en hexadécimal
* @param buf
* @return
*/  
   public static String parseByte2HexStr(byte buf[]) {  
           StringBuffer sb = new StringBuffer();  <  
                   if (hex.length() == 1) {  
                           hex = '0' + hex;  
                   }  
                  sb.append(hex.toUpperCase());  
           }  
           return sb.toString();  
   }  
   /**Convertir l'hexadécimal en binaire
* @param hexStr
* @return
*/  
  public static byte[] parseHexStr2Byte(String hexStr) {  
                 renvoie null ;  
           byte[] result = new byte[hexStr.length()/2];  
           for (int i = 0;i< hexStr.length()/2; i++) {  
int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); 🎜> public static void main(String [] args) lance une exception {
/*
* Le mode de cryptage AES-128-ECB est utilisé ici et la clé doit être de 16 bits.
*/
String cKey = "1234567890123456";
// Chaîne qui doit être chiffrée
String cSrc = "www.gowhere.so";
System.out println(cSrc. ) ;
                                                                                                                                  String enString = AES.Encrypt(cSrc, cKey); // Decrypt
String DeString = AES.Decrypt(enString, cKey);
System.out.println("La chaîne déchiffrée est : " + DeString);
String content = "test";
String password = "12345678";
//Cryptage
System.out.println("Avant le chiffrement : " + content);
byte[] encryptResult = encrypt(content, password);
String encryptResultStr = parseByte2HexStr(encryptResult);
System.out.println("Après le cryptage : " + encryptResultStr

//Déchiffrement

decryptFrom = par seHexStr2Byte(encryptResultStr);
byte[] decryptResult = decrypt(decryptFrom,password);
System.out.println("Après le décryptage : " + new String(decryptResult)); >
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Activez le cryptage Bitlocker 256 bits sur Windows 11 pour une sécurité accrue Activez le cryptage Bitlocker 256 bits sur Windows 11 pour une sécurité accrue Nov 26, 2023 am 11:21 AM

Bitlocker est la technologie de cryptage par défaut pour les systèmes d'exploitation Windows. Il est largement utilisé sous Windows, mais certains utilisateurs préfèrent les solutions tierces telles que VeraCrypt. Ce que de nombreux utilisateurs de Bitlocker ne savent pas, c'est qu'il utilise par défaut un cryptage de 128 bits, même si 256 bits sont disponibles. Sans entrer dans les détails des différences, la principale différence entre le cryptage AES 128 bits et 256 bits réside dans la longueur de la clé de sécurité. Des touches plus longues rendent les attaques par force brute plus difficiles. Bien que la valeur par défaut soit de 128 bits, même Microsoft recommande 256 bits pour une meilleure sécurité. Le problème est que la plupart des utilisateurs ne connaissent probablement pas les valeurs par défaut les plus faibles ni comment les modifier. Tout d'abord, vous voudrez peut-être savoir W

Tutoriel détaillé du DNS crypté Win11 Tutoriel détaillé du DNS crypté Win11 Dec 25, 2023 am 10:13 AM

Microsoft fournissait auparavant des services de cryptage DNS pour Win11, mais de nombreux utilisateurs ne savent pas comment utiliser le DNS crypté Win11. En fait, il suffit d'ouvrir les paramètres DNS dans les paramètres réseau. Tutoriel détaillé sur le DNS chiffré Win11 : 1. Entrez d'abord le disque et recherchez le dossier que vous souhaitez chiffrer. 2. Ensuite, ouvrez « Ethernet » à droite 3. Recherchez ensuite l'allocation du serveur DNS ci-dessous et cliquez sur « Modifier » 4. Après avoir changé « Auto (DHCP) » en « Manuel », ouvrez « IPv4 » ci-dessous 5. Après l'avoir allumé , entrez "8.8.8.8" dans le DNS préféré 6. Modifiez ensuite le cryptage DNS préféré en "Cryptage uniquement (DNS sur HTTPS)" 7. Une fois les modifications terminées, cliquez sur "Enregistrer" et vous trouverez

Win10 Home Edition prend-il en charge le cryptage des dossiers ? Win10 Home Edition prend-il en charge le cryptage des dossiers ? Jan 09, 2024 am 08:58 AM

Le cryptage des fichiers vise à mettre en œuvre un cryptage des données de niveau professionnel pour garantir plus efficacement la sécurité des données ! Ce n'est qu'en maîtrisant la clé de cryptage correcte que l'opération de décryptage peut être effectuée, garantissant ainsi la sécurité des actifs informationnels. Cependant, la fonction de cryptage de fichiers de Win10 Home Edition ne dispose pas encore de cette fonctionnalité. Win10 Home Edition peut-il chiffrer les dossiers ? Réponse : Win10 Home Edition ne peut pas chiffrer les dossiers. Tutoriel sur le cryptage de fichiers dans le système Windows 1. Cliquez avec le bouton droit sur le fichier ou le dossier que vous souhaitez crypter (ou appuyez et maintenez enfoncé pendant un moment), puis sélectionnez la fonction « Propriétés ». 2. Dans la nouvelle interface étendue, recherchez l'option « Avancé ». Après avoir cliqué pour entrer, n'oubliez pas de cocher l'option « Chiffrer le contenu pour protéger les données » située en dessous. 3. Une fois le réglage terminé, cliquez sur « OK » pour

Comment configurer le cryptage de l'album photo sur un téléphone mobile Apple Comment configurer le cryptage de l'album photo sur un téléphone mobile Apple Mar 02, 2024 pm 05:31 PM

Sur les téléphones mobiles Apple, les utilisateurs peuvent crypter les albums photos selon leurs propres besoins. Certains utilisateurs ne savent pas comment le configurer. Vous pouvez ajouter les images qui doivent être cryptées au mémo, puis verrouiller le mémo. Ensuite, l'éditeur présentera la méthode de configuration du cryptage des albums photo mobiles pour les utilisateurs intéressés, venez jeter un œil ! Tutoriel sur les téléphones mobiles Apple Comment configurer le cryptage de l'album photo iPhone A : Après avoir ajouté les images qui doivent être cryptées au mémo, allez verrouiller le mémo pour une introduction détaillée : 1. Entrez dans l'album photo, sélectionnez l'image qui doit être cryptée. crypté, puis cliquez sur [Ajouter à] ci-dessous. 2. Sélectionnez [Ajouter aux notes]. 3. Saisissez le mémo, recherchez le mémo que vous venez de créer, saisissez-le et cliquez sur l'icône [Envoyer] dans le coin supérieur droit. 4. Cliquez sur [Verrouiller l'appareil] ci-dessous

Comment définir un mot de passe pour le cryptage de dossiers sans compression Comment définir un mot de passe pour le cryptage de dossiers sans compression Feb 20, 2024 pm 03:27 PM

Le cryptage de dossier est une méthode courante de protection des données qui crypte le contenu d'un dossier afin que seules les personnes disposant du mot de passe de décryptage puissent accéder aux fichiers. Lors du chiffrement d'un dossier, il existe des méthodes courantes pour définir un mot de passe sans compresser le fichier. Tout d’abord, nous pouvons utiliser la fonction de cryptage fournie avec le système d’exploitation pour définir un mot de passe de dossier. Pour les utilisateurs Windows, vous pouvez le configurer en suivant les étapes suivantes : Sélectionnez le dossier à chiffrer, cliquez avec le bouton droit sur le dossier et sélectionnez « Propriétés ».

Problèmes et solutions courants en matière de communication et de sécurité réseau en C# Problèmes et solutions courants en matière de communication et de sécurité réseau en C# Oct 09, 2023 pm 09:21 PM

Problèmes courants de communication réseau et de sécurité et solutions en C# À l'ère d'Internet d'aujourd'hui, la communication réseau est devenue un élément indispensable du développement logiciel. En C#, nous rencontrons généralement certains problèmes de communication réseau, tels que la sécurité de la transmission des données, la stabilité de la connexion réseau, etc. Cet article abordera en détail les problèmes courants de communication réseau et de sécurité en C# et fournira les solutions correspondantes et des exemples de code. 1. Problèmes de communication réseau Interruption de la connexion réseau : pendant le processus de communication réseau, la connexion réseau peut être interrompue, ce qui peut entraîner

Liste complète des fonctions de cryptage et de décryptage PHP : méthodes d'application sécurisées de md5, sha1, base64_encode et autres fonctions Liste complète des fonctions de cryptage et de décryptage PHP : méthodes d'application sécurisées de md5, sha1, base64_encode et autres fonctions Nov 18, 2023 pm 04:18 PM

Liste complète des fonctions de cryptage et de décryptage PHP : méthodes d'application sécurisées de md5, sha1, base64_encode et d'autres fonctions, nécessitant des exemples de code spécifiques. Dans le développement d'applications réseau, le cryptage et le décryptage des données sont très importants. En tant que langage de script côté serveur populaire, PHP fournit une variété de fonctions de cryptage et de déchiffrement. Cet article présentera les fonctions couramment utilisées et leurs méthodes d'application sécurisées, et fournira des exemples de code spécifiques. Fonction md5 La fonction md5 est la fonction de cryptage la plus courante capable de convertir une chaîne de n'importe quelle longueur en 32 bits.

Guide complet sur le cryptage de fichiers Win11 Guide complet sur le cryptage de fichiers Win11 Jan 09, 2024 pm 02:50 PM

Certains amis souhaitent protéger leurs fichiers, mais ne savent pas comment crypter les documents Win11. En fait, nous pouvons directement utiliser le cryptage de dossiers ou utiliser un logiciel tiers pour crypter des fichiers. Tutoriel détaillé sur le cryptage de documents Win11 : 1. Recherchez d'abord le fichier que vous souhaitez crypter, faites un clic droit pour le sélectionner et ouvrez "Propriétés" 2. Cliquez ensuite sur "Avancé" dans la colonne des propriétés 3. Sélectionnez "Crypter le contenu pour protéger les données " dans Avancé et cliquez sur " OK " 4. Cliquez ensuite sur " OK " pour enregistrer. 5. Enfin, sélectionnez le mode de cryptage souhaité et « OK » pour enregistrer le document afin de crypter le document.

See all articles