이번에는 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 중국어 웹사이트에서!
추천 도서:
위 내용은 Python에서 HMacMD5 암호화 알고리즘을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!