Outils de cryptage AES Java

AESCodec.java

Paquet util; importation java.security.Key;

importation javax.crypto.Cipher; importation javax.crypto.KeyGenerator;
importation javax.crypto.SecretKey;
importation javax.crypto.spec.SecretKeySpec;

importation org.apache.commons.codec.binary .Base64,

publique classe AESCodec {

   
// algorithme à clé
    privée statique final Chaîne KEY_ALGORITHM = "AES" ;

   
// chiffrement et le déchiffrement algorithme / mode / mode de remplissage, Java6.0 en charge le mode PKCS5Padding de remplissage, BouncyCastle support PKCS7Padding mode de remplissage
    privé statique final CIPHER_ALGORITHM = String "AES / BCE / PKCS5Padding" ;

   
//Par défaut clé
    privée statique final Chaîne KEY = "FFK / B5sFXeITk6cXV5rTNA ==" ;

   
/ **
    * générer une clé
   
* /
    publique statique Chaîne InitKey () lance Exception {

       
// instanciation générateur de clé
        du KeyGenerator kg = KeyGenerator.getInstance (KEY_ALGORITHM );

       
// initialiser les générateurs principaux: AES longueur de la clé nécessite 128192256 bit
        kg.init (128 );

       
// générer la clé
        une secretKey secretKey = kg.generateKey ();

       
// Get forme codée binaire touche
        retour la base64. encodeBase64String (secretKey.getEncoded ());
    }

   
/ **
    * clé de conversion
   
* /
    publique statique clé toKey ( octet [] Key) lance Exception {
       
retour NOUVEAUTÉSNouveaux SecretKeySpec (clé, KEY_ALGORITHM);
    }

   
/ **
    * Données chiffrées
    *
    *
@param données à données cryptées
    *
@param clés clés
    *
@return données chiffrées
    *
* /
    publique statique Chaîne Chiffrer (String Data String key) lance Exception {

       
// restaurer la clé
        clé K = toKey (Base64.decodeBase64 (clé));

       
// utilisation PKCS7Padding mode de remplissage, il y a donc écrit ( à savoir appel BouncyCastle de mise en œuvre du composant)

       
//Cipher objet est instancié, il est utilisé pour faire le chiffrement réel de
        Cipher cipher = Cipher.getInstance (CIPHER_ALGORITHM);

       
// objet Cipher est initialisé, le mode de cryptage est réglé
        cipher.init (Cipher.ENCRYPT_MODE, K);

       
// effectuer des opérations cryptographiques. Résultats généralement chiffrés pour la transmission Base64
        retour Base64.encodeBase64String (Cipher.doFinal (data.getBytes ()));
    }

   
/ **
    * données décryptées
    *
    *
@param données à données déchiffrées
    *
@param clés clés
    *
@return données déchiffrées
    *
* /
    publique statique Chaîne du Décrypter (données String, String Key) lance Exception {
        clé K
=toKey (Base64.decodeBase64 (Key));
        cipher Cipher
= Cipher.getInstance (CIPHER_ALGORITHM);

       
// objet Cipher est initialisé, est prévu pour le mode de décryptage
        cipher.init (Cipher.DECRYPT_MODE, K);

       
// effectuer des opérations de déchiffrement
        retour nouvelle nouvelle chaîne ( Cipher.doFinal (Base64.decodeBase64 (données)));
    }

   
/ **
    * données chiffrées
    *
    *
@param données à données cryptées
    *
@param clé touche
    *
@return données chiffrées
    *
* /
    publique statique Chaîne Chiffrer (String données) jette Exception {
       
retour Chiffrer (données, KEY);
    }

   
/ **
    * données décryptées
    *
    *
@param données à des données décryptées
    *
@param clé Key
    *
@return données déchiffrées
    *
* /
    publique statique Chaîne du Décrypter (Data String) lance Exception {
       
retour le déchiffrement (données, KEY);
    }

   
publique statique vide main (String [] args) lance Exception {
       
// System.out.println ( "Key:" + InitKey ());
        données chaîne = "123456" ;

        chaîne Chiffrer
= Chiffrer (données);
        System.out.println (encrypt);
        System.out.println (decrypt (chiffrer));

    }
}

Je suppose que tu aimes

Origine www.linuxidc.com/Linux/2020-03/162771.htm
conseillé
Classement