この記事では、主に Python で実装された HMacMD5 暗号化アルゴリズムを紹介し、HMAC-MD5 暗号化アルゴリズムの概念と原理を簡単に説明し、Python による HMAC-MD5 暗号化アルゴリズムの実装に関連する操作スキルを Java の例の形で分析します。 HMAC-MD5 暗号化アルゴリズムの実装例については、必要な方は参考にしてください
この記事では、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.py2cbb9 4ce78b 35e4030851c4d40dacf12
プロセスは終了コード 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
PS: 暗号化について 復号化に興味のある友人は、この Web サイトのオンライン ツールを参照することもできます。
オンラインテキスト暗号化および復号ツール (AES、DES、RC4 などを含む):
http://tools.jb51.net/password/txt_encode
MD5オンライン暗号化ツール:
http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:
http://tools.jb51.net/password/hash_encrypt
オンラインMD5/ hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 暗号化ツール:
http://tools.jb51.net/password/hash_md5_sha
オンライン sha1 /sha224/sha256/sha384/sha512 暗号化ツール:
関連するおすすめ:
以上がPython_python で実装された HMacMD5 暗号化アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。