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));
}
}