>  기사  >  백엔드 개발  >  Python_python에 구현된 HMacMD5 암호화 알고리즘의 예

Python_python에 구현된 HMacMD5 암호화 알고리즘의 예

不言
不言원래의
2018-04-08 11:45:232426검색

이 글에서는 주로 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는 서로 다른 채널을 통해 제공됩니다. 예를 들어 MD5는 웹 페이지에 표시되고 다운로드 링크는 미러 웹사이트에서 제공됩니다. 동일한 채널(예: 메시지 인증 코드)을 통해 데이터와 해시 값을 전송하려면 데이터와 MD5가 동시에 변조되는 문제를 고려해야 합니다. MD5 해싱을 수행하여 수신자에게 함께 보냅니다. 수신자는 데이터가 변조되었음을 감지할 수 없습니다. HMAC-MD5는 송신자와 수신자가 공유하는 키를 이용하여 계산할 수 있으며, 이 키가 없는 제3자는 정확한 해시값을 계산할 수 없으므로 데이터 변조를 방지할 수 있습니다.

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
2cbb 94ce78b 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: 암호화 정보 암호 해독에 관심이 있는 친구는 이 웹사이트의 온라인 도구를 참조할 수도 있습니다.

온라인 텍스트 암호화 및 암호 해독 도구(AES, DES, RC4 등 포함):
http://tools.jb51.net/password/txt_encode

MD5온라인 암호화 도구:
http: //tools.jb51.net/password/CreateMD5Password

온라인 해싱/해시 알고리즘 암호화 도구:
http://tools.jb51.net/password/hash_encrypt

OnlineMD5/ 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 암호화 도구:

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

관련 추천:

5가지 알고리즘[php 버전]

위 내용은 Python_python에 구현된 HMacMD5 암호화 알고리즘의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.