백엔드 개발 파이썬 튜토리얼 Python_python에 구현된 HMacMD5 암호화 알고리즘의 예

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

Apr 08, 2018 am 11:45 AM
python 연산

이 글에서는 주로 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 시스템에서 Python 통역사를 삭제할 수 있습니까? Linux 시스템에서 Python 통역사를 삭제할 수 있습니까? Apr 02, 2025 am 07:00 AM

Linux 시스템과 함께 제공되는 Python 통역사를 제거하는 문제와 관련하여 많은 Linux 배포판이 설치 될 때 Python 통역사를 사전 설치하고 패키지 관리자를 사용하지 않습니다 ...

파이썬에서 맞춤형 데코레이터의 Pylance 유형 감지 문제를 해결하는 방법은 무엇입니까? 파이썬에서 맞춤형 데코레이터의 Pylance 유형 감지 문제를 해결하는 방법은 무엇입니까? Apr 02, 2025 am 06:42 AM

Pylance 유형 감지 문제 솔루션 Python 프로그래밍에서 사용자 정의 데코레이터를 사용할 때 Decorator는 행을 추가하는 데 사용할 수있는 강력한 도구입니다 ...

Python 3.6 피클 파일로드 오류 modulenotfounderRor : 피클 파일 '__builtin__'를로드하면 어떻게해야합니까? Python 3.6 피클 파일로드 오류 modulenotfounderRor : 피클 파일 '__builtin__'를로드하면 어떻게해야합니까? Apr 02, 2025 am 06:27 AM

Python 3.6에 피클 파일 로딩 3.6 환경 오류 : ModulenotFounderRor : nomodulename ...

Fastapi와 Aiohttp는 동일한 글로벌 이벤트 루프를 공유합니까? Fastapi와 Aiohttp는 동일한 글로벌 이벤트 루프를 공유합니까? Apr 02, 2025 am 06:12 AM

파이썬 비동기 라이브러리 사이의 호환성 문제 파이썬에서 비동기 프로그래밍은 동시성과 I/O의 프로세스가되었습니다 ...

파이썬에서 신호를 통해 부모 프로세스를 죽인 후 아동 프로세스가 종료되도록하는 방법은 무엇입니까? 파이썬에서 신호를 통해 부모 프로세스를 죽인 후 아동 프로세스가 종료되도록하는 방법은 무엇입니까? Apr 02, 2025 am 06:39 AM

아동 프로세스의 문제와 해결책은 신호를 사용하여 부모 프로세스를 죽일 때 계속 실행됩니다. Python 프로그래밍에서 신호를 통해 부모 프로세스를 죽인 후에도 아동 프로세스는 여전히 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까? Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까? Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

See all articles