Dans la section précédente, nous avons présenté l'utilisation de certaines classes de chiffrement et de déchiffrement. Rassemblons-les pour effectuer un test simple. Le code est le suivant :
Activité principale :
Copiez le code comme suit :
paquet com.home.testdes ;
importer android.os.Bundle ;
importer android.util.Log ;
importer android.app.Activity ;
la classe publique MainActivity étend l'activité {
@Outrepasser
protected void onCreate (Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
DESUtil u = new DESUtil();
String mi = u.getEnc("Je t'aime");
Log.i("Après le cryptage", mi);
Chaîne ming = u.getDec(mi);
Log.i("Après le décryptage", ming);
}
}
Outils de cryptage et de décryptage :
Copiez le code comme suit :
paquet com.home.testdes ;
importer java.security.Key ;
importer java.security.spec.AlgorithmParameterSpec ;
importer javax.crypto.Cipher ;
importer javax.crypto.SecretKeyFactory ;
importer javax.crypto.spec.DESKeySpec ;
importer javax.crypto.spec.IvParameterSpec ;
importer android.util.Base64 ;
/**
* Utiliser les outils de cryptage et de décryptage DES
*
* @auteur Administrateur
*
*/
classe publique DESUtil {
Clé privée clé ; // valeur clé de la clé
octet privé[] DESkey ;
octet privé[] DESIV = { 0x12, 0x34, 0x56, 0x78, (octet) 0x90, (octet) 0xAB,
(octet) 0xCD, (octet) 0xEF } ;
private AlgorithmParameterSpec iv = null;//Interface de paramètres de l'algorithme de chiffrement
public DESUtil() {
essayer {
this.DESkey = "abcdefghijk".getBytes("UTF-8");//Définir la clé
DESKeySpec keySpec = new DESKeySpec(DESkey);//Définir les paramètres clés
iv = new IvParameterSpec(DESIV); // Définir le vecteur
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//Obtenir la fabrique de clés
key = keyFactory.generateSecret(keySpec);//Obtenir l'objet clé
} attraper (Exception e) {
e.printStackTrace();
}
}
/**
* Chaîne cryptée, saisie de texte brut, sortie de texte chiffré
*
* @param chaîne d'entrée
* Texte brut à chiffrer
* @return chaîne chiffrée
*/
public String getEnc (String inputString) {
octet[] octetMi = null;
octet[] octetMing = null;
Chaîne sortieString = "" ;
essayer {
byteMing = inputString.getBytes("UTF-8");
byteMi = this.getEncCode(byteMing);
octet[] temp = Base64.encode(byteMi, Base64.DEFAULT);
sortieString = new String(temp);
} attraper (Exception e) {
} enfin {
octetMing = nul ;
octetMi = nul ;
}
renvoie une chaîne de sortie ;
}
/**
* Décrypter la chaîne et saisir le texte brut sous forme de texte chiffré et de sortie
*
* @param chaîne d'entrée
* La chaîne qui doit être déchiffrée
* @return chaîne déchiffrée
*/
chaîne publique getDec (chaîne chaîne d'entrée) {
octet[] octetMing = null;
octet[] octetMi = null;
Chaîne strMing = "" ;
essayer {
byteMi = Base64.decode(inputString.getBytes(), Base64.DEFAULT);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} attraper (Exception e) {
} enfin {
octetMing = nul ;
octetMi = nul ;
}
return chaîne ;
}
/**
* Le cryptage utilise l'entrée de texte brut byte[] et la sortie de texte chiffré byte[]
*
* @param bt
* Bytecode à chiffrer
* @return le bytecode crypté
*/
octet privé[] getEncCode(octet[] bt) {
octet[] octetFina = null;
Chiffre chiffré ;
essayer {
// Récupère l'instance de chiffrement
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, clé, iv);
byteFina = cipher.doFinal(bt);
} attraper (Exception e) {
e.printStackTrace();
} enfin {
chiffre = nul ;
}
retourner octetFina ;
}
/**
* Le déchiffrement utilise l'entrée de texte chiffré byte[] et la sortie de texte brut byte[]
*
* @param bt
* Bytecode à décrypter
* @return bytecode déchiffré
*/
octet privé[] getDesCode(octet[] bt) {
Chiffre chiffré ;
octet[] octetFina = null;
essayer {
// Récupère l'instance de chiffrement
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, clé, iv);
byteFina = cipher.doFinal(bt);
} attraper (Exception e) {
e.printStackTrace();
} enfin {
chiffre = nul ;
}
retourner octetFina ;
}
}