Exemple d'algorithme de chiffrement HMacMD5 implémenté dans Python_python

不言
Libérer: 2018-04-08 11:45:23
original
2337 Les gens l'ont consulté

Cet article présente principalement l'algorithme de chiffrement HMacMD5 implémenté en Python, explique brièvement le concept et le principe de l'algorithme de chiffrement HMAC-MD5 et analyse les compétences opérationnelles pertinentes de la mise en œuvre par Python de l'algorithme de chiffrement HMAC-MD5 sous forme d'exemples. .Il est également ajouté à la fin. Voici un exemple d'implémentation de l'algorithme de chiffrement HMAC-MD5 en Java. Les amis qui en ont besoin peuvent se référer à

Cet article décrit l'algorithme de chiffrement HMacMD5 implémenté en Python à titre d'exemple. 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
Copier après la connexion

Résultat de sortie :

"d: programme filessython27python.exe" d: /ypycharmprojects/learn2017/hmacmd5.py
2cbb94ce78b35e4030851c4d40dacf12
Processus terminé avec le code d'ext. Version Java :

Résultat de sortie :

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))); } }
Copier après la connexion

2cbb94ce78b35e4030851c4d40dacf12

PS : Les amis intéressés par le cryptage et le décryptage peuvent également se référer aux outils en ligne de ce site :

Cryptage de texte en ligne et outils de décryptage (dont AES, DES, RC4, etc.) :

http://tools.jb51.net/password/txt_encode


MD5

Outils de chiffrement en ligne :http://tools.jb51.net/password/CreateMD5Password
Algorithme de hachage/hachage en ligne Outil de cryptage :

http://tools.jb51.net/password/hash_encrypt
En ligne
MD5

/hash/SHA- 1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 outils de chiffrement :

http://tools.jb51.net/password/ hash_md5_sha
Outil de chiffrement sha1/sha224/sha256/sha384/sha512 en ligne :

http://tools.jb51.net /password/sha_encode

Recommandations associées :

Transfer : algorithme HmacMD5 [version php]

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!