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