>  기사  >  백엔드 개발  >  Python에서 HMacMD5 암호화 알고리즘을 구현하는 방법

Python에서 HMacMD5 암호화 알고리즘을 구현하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-04-09 09:57:252064검색

이번에는 PythonHMacMD5 암호화 알고리즘을 구현하는 방법과 HMacMD5 암호화 알고리즘을 구현하기 위한 Python의 Notes가 무엇인지 알아보겠습니다.

이 문서의 예에서는 Python으로 구현된 HMacMD5 암호화 알고리즘을 설명합니다. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

HMAC-MD5란 무엇인가요?

1 예를 들어, 상대방과 키 K를 공유하고 있는데 이제 상대방에게 메시지를 보내려면 메시지가 변조되지 않았는지 확인해야 할 뿐만 아니라 증명도 해야 합니다. 실제로 자신이 보낸 메시지인지 확인하고 원본 메시지를 전송합니다. K를 사용하여 계산된 HMAC 값과 함께 전송합니다. 상대방이 이를 수신한 후 자신의 손에 있는 K를 사용하여 메시지의 HMAC를 계산합니다. 귀하가 보낸 HMAC와 일치하면 메시지가 변조되거나 사칭되지 않은 것으로 간주할 수 있습니다.

2. 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
2cbb94ce78b35e4030851 c4d40da 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 중국어 웹사이트에서!

추천 도서:

파이썬 문자열을 2차원 배열로 변환하는 방법

이벤트 발생기의 수신 이벤트

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

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