ホームページ  >  記事  >  バックエンド開発  >  Python で HMacMD5 暗号化アルゴリズムを実装する方法

Python で HMacMD5 暗号化アルゴリズムを実装する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-09 09:57:252059ブラウズ

今回は、PythonHMacMD5暗号化アルゴリズムを実装する方法と、HMacMD5暗号化アルゴリズムを実装するためのPythonでの注意事項について説明します。実際のケースを見てみましょう。

この記事の例では、Python で実装された HMacMD5 暗号化アルゴリズムについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

HMAC-MD5 とは何ですか?

1. たとえば、鍵 K を相手と共有し、相手にメッセージを送信したい場合、メッセージが改ざんされていないことを確認するだけでなく、それを証明する必要があります。メッセージが確かにあなたによって送信されたものであることを確認してから、元のメッセージを送信します。K を使用して計算された HMAC 値と一緒に送信します。相手はそれを受け取った後、自分の手に持っている K を使用してメッセージの HMAC を計算し、それが送信した HMAC と一致する場合、メッセージは改ざんまたはなりすましされていないと考えられます。

2. MD5 は、出力されるデータをハッシュ化します。データを受信すると、指定された MD5 ハッシュ値と比較すると、一致しているか不一致であるかがわかります。一般に、送信されるデータと MD5 は別のチャネルを通じて提供されます。たとえば、MD5 は Web ページに表示され、ダウンロード リンクはミラー Web サイトから提供されます。データとハッシュ値(メッセージ認証コードなど)を同じチャネルで送信したい場合は、データとMD5が同時に改ざんされる問題を考慮する必要があります。 MD5 でハッシュ化して受信者に送信すると、受信側はデータが改ざんされていることを検出できません。 HMAC-MD5は送信者と受信者が共有する鍵を使って計算することができ、この鍵を持たない第三者は正しいハッシュ値を計算することができないため、データの改ざんを防ぐことができます。

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

出力結果:

"D:Program FilesPython27python.exe" D:/PycharmProjects/learn2017/hmacmd5.py
2cbb94ce78b35e4030851c 4d40da cf12
終了コード 0 でプロセスが終了しました

Java バージョン:

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

出力結果:

2cbb94ce78b35e4030851c4d40dacf12

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、こちらをご覧ください。他の関連記事にも注目してくださいphp中国語ウェブサイトで!

推奨書籍:

Python 文字列を 2 次元配列に変換する方法

イベント エミッターのリスニング イベント

以上がPython で HMacMD5 暗号化アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。