Maison  >  Article  >  développement back-end  >  Comment implémenter l'algorithme de chiffrement HMacMD5 en Python

Comment implémenter l'algorithme de chiffrement HMacMD5 en Python

php中世界最好的语言
php中世界最好的语言original
2018-04-09 09:57:252085parcourir

Cette fois, je vais vous expliquer Python comment implémenter l'algorithme de chiffrement HMacMD5, et quelles sont les précautions pour implémenter l'algorithme de chiffrement HMacMD5 en Python. Ce qui suit est un cas pratique. , jetons un coup d'oeil.

L'exemple de cet article décrit l'algorithme de chiffrement HMacMD5 implémenté en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Qu'est-ce que HMAC-MD5 ?

1. Par exemple, vous partagez une clé K avec l'autre partie. Vous souhaitez maintenant envoyer un message à l'autre partie. Vous devez non seulement vous assurer que le message n'a pas été envoyé. falsifié, mais prouve également que le message est bien vous. S'il est envoyé, alors les informations d'origine et la valeur HMAC calculée à l'aide de K sont envoyées ensemble. Une fois que l'autre partie l'a reçu, il utilise le K dans sa main pour calculer le HMAC du message. S'il est cohérent avec le HMAC que vous avez envoyé, on peut alors considérer que le message n'a pas été falsifié ou usurpé.

2. MD5 digère les données à sortir par hachage. Lorsque les données sont reçues, le même hachage MD5 est effectué. Par rapport à la valeur de hachage MD5 donnée, il est clair qu'elle est cohérente et incohérente. De manière générale, les données transmises et MD5 sont transmis via différents canaux. Par exemple, MD5 est affiché sur la page Web et le lien de téléchargement provient d'un site Web miroir. Si vous souhaitez envoyer des données et des valeurs de hachage via le même canal (comme le code d'authentification du message), vous devez considérer le problème de la falsification des données et du MD5 en même temps. Si un tiers modifie les données, alors effectuez. Hachage MD5 et envoyez-le ensemble au destinataire. Le destinataire ne peut pas détecter que les données ont été falsifiées. HMAC-MD5 peut être calculé à l'aide d'une clé partagée par l'expéditeur et le destinataire, et un tiers sans cette clé ne peut pas calculer la valeur de hachage correcte, empêchant ainsi la falsification des données.

version python :

#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import hmac
import hashlib
####################设置Key值##############
ekey = 'laidefa'
###############输入数据############
to_enc = '{"name":"zhangsan"}'
enc_res = hmac.new(ekey, to_enc, hashlib.md5).hexdigest()
print enc_res

Résultat de sortie :

"D:Program FilesPython27python.exe" D: /pyCharmprojects/learn2017/hmacmd5.py
2CBB94CE78B35E4030851C4D40DACF12
PROCESSUS TERMINÉ AVEC LE CODE DE SORTIE 0

version ava :

package tom;
import java.security.MessageDigest;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* 基础加密组件
* @version 1.0
*/
public class Hmacmd5 {
  /**
   * MAC算法可选以下多种算法
   *
   * <pre class="brush:php;toolbar:false">
   * HmacMD5
   * HmacSHA1
   * HmacSHA256
   * HmacSHA384
   * HmacSHA512
   * 
   */   public static final String KEY_MAC = "HmacMD5";   /**    * HMAC加密    *    * @param data    * @param key    * @return    * @throws Exception    */   public static byte[] encryptHMAC(byte[] data, String key) throws Exception {     SecretKey secretKey = new SecretKeySpec(key.getBytes(), KEY_MAC);     Mac mac = Mac.getInstance(secretKey.getAlgorithm());     mac.init(secretKey);     return mac.doFinal(data);   }   /*byte数组转换为HexString*/   public static String byteArrayToHexString(byte[] b) {     StringBuffer sb = new StringBuffer(b.length * 2);     for (int i = 0; i < b.length; i++) {      int v = b[i] & 0xff;      if (v < 16) {       sb.append('0');      }      sb.append(Integer.toHexString(v));     }     return sb.toString();    }   public static void main(String[] args)throws Exception{     String inputStr = "{\"name\":\"zhangsan\"}";     byte[] inputData = inputStr.getBytes();     String key = "laidefa";     System.out.println(Hmacmd5.byteArrayToHexString(Hmacmd5.encryptHMAC(inputData, key)));   } }Résultat de sortie :

2cbb94ce78b35e4030851c4d40dacf12

Je crois que vous maîtrisez la méthode après avoir lu le cas dans ce article , pour un contenu plus passionnant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment convertir une chaîne python en un tableau bidimensionnel

Événement d'écoute de l'émetteur d'événement

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:
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