Python의 일반적인 암호화 및 암호 해독 알고리즘은 무엇입니까?
1.url encode加密
简介:当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import urllib.parse text = "我爱吃鸡腿" s = urllib.parse.quote(text) print(s) # %E6%88%91%E7%88%B1%E5%90%83%E9%B8%A1%E8%85%BF u = urllib.parse.unquote(s) print(u) #我爱吃鸡腿
2.unicode 加密
其实这应该不算一种加密 更多的应该算是一种编码与解码,但是由于运用很广泛 我也加进去了
# -*- coding: utf-8 -*- # @Time : 2023/2/28 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm str1 = "你好" # 编码 enStr1 = str1.encode('unicode-escape').decode() print(enStr1) # \u4f60\u597d # 解码 deStr1 = enStr1.encode().decode('unicode-escape') print(deStr1) # 你好
3.Base64 加密
简介:Base64 是一种用 64 个字符来表示任意二进制数据的方法。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import base64 def base64_encode(text): encode_data = base64.b64encode(text.encode()) return encode_data def base64_decode(encode_data): decode_data = base64.b64decode(encode_data) return decode_data if __name__ == '__main__': text = 'I love Python!' encode_data = base64_encode(text) decode_data = base64_decode(encode_data) print('Base64 编码:', encode_data) print('Base64 解码:', decode_data) # Base64 编码: b'SSBsb3ZlIFB5dGhvbiE=' # Base64 解码: b'I love Python!'
4.MD5
简介:全称 MD5 消息摘要算法(英文名称:MD5 Message-Digest Algorithm),又称哈希算法、散列算法,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于 1992 年作为 RFC 1321 被公布,用以取代 MD4 算法。摘要算法属于单向加密,这意味着用摘要算法处理后的明文无法被解密。
摘要算法的第二个特点密文是固定长度的,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。之所以叫摘要算法,它的算法就是提取明文重要的特征。使用摘要算法后,两个不同的明文可能会生成相同的密文,但这种情况非常罕见。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import hashlib def md5_test1(): md5 = hashlib.new('md5', 'I love python!'.encode('utf-8')) print(md5.hexdigest()) def md5_test2(): md5 = hashlib.md5() md5.update('I love '.encode('utf-8')) md5.update('python!'.encode('utf-8')) print(md5.hexdigest()) if __name__ == '__main__': md5_test1() # 21169ee3acd4a24e1fcb4322cfd9a2b8 md5_test2() # 21169ee3acd4a24e1fcb4322cfd9a2b8
5.PBKDF2
简介:英文名称:Password-Based Key Derivation Function 2,PBKDF2 是 RSA 实验室的公钥加密标准(PKCS)系列的一部分,
2017 年发布的 RFC 8018 (PKCS #5 v2.1)推荐使用 PBKDF2 进行密码散列。
PBKDF2 将伪随机函数(例如 HMAC),把明文和一个盐值(salt)作为输入参数,然后进行重复运算,并最终产生密钥,如果重复的次数足够大,破解的成本就会变得很高。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import binascii from Cryptodome.Hash import SHA1 from Cryptodome.Protocol.KDF import PBKDF2 text = 'I love Python!' salt = b'43215678' result = PBKDF2(text, salt, count=10, hmac_hash_module=SHA1) result = binascii.hexlify(result) print(result) # b'7fee6e8350cfe96314c76aaa6e853a50'
6.SHA
简介:全称安全哈希算法(英文名称:Secure Hash Algorithm),主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(
Digital Signature Algorithm DSA),SHA 通常指 SHA 家族的五个算法,分别是 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,后四者有时并称为 SHA-2,SHA 是比 MD5 更安全一点的摘要算法,MD5 的密文是 32 位,而 SHA-1 是 40 位,版本越强,密文越长,代价是速度越慢。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import hashlib def sha1_test1(): sha1 = hashlib.new('sha1', 'I love python!'.encode('utf-8')) print(sha1.hexdigest()) def sha1_test2(): sha1 = hashlib.sha1() sha1.update('I love python!'.encode('utf-8')) print(sha1.hexdigest()) if __name__ == '__main__': sha1_test1() # 23c02b203bd2e2ca19da911f1d270a06d86719fb sha1_test2() # 23c02b203bd2e2ca19da911f1d270a06d86719fb
7.HMAC
简介:全称散列消息认证码、密钥相关的哈希运算消息认证码(英文名称:Hash-based Message Authentication Code 或者 Keyed-hash Message Authentication Code),于 1996 年提出,1997 年作为 RFC 2104 被公布,HMAC 加密算法是一种安全的基于加密 Hash函数和共享密钥的消息认证协议,它要求通信双方共享密钥 key、约定算法、对报文进行 Hash 运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。
import hmac # -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm def hmac_test1(): message = b'I love python!' key = b'secret' md5 = hmac.new(key, message, digestmod='MD5') print(md5.hexdigest()) def hmac_test2(): key = 'secret'.encode('utf8') sha1 = hmac.new(key, digestmod='sha1') sha1.update('I love '.encode('utf8')) sha1.update('Python!'.encode('utf8')) print(sha1.hexdigest()) if __name__ == '__main__': hmac_test1() # 9c503a1f852edcc3526ea56976c38edf hmac_test2() # 2d8449a4292d4bbeed99ce9ea570880d6e19b61a
8.DES
简介:全称数据加密标准(英文名称:Data Encryption Standard),加密与解密使用同一密钥,属于对称加密算法,1977 年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),DES 是一个分组加密算法,使用 56 位的密钥(一般认为密钥是 64 位,但是密钥的每个第 8 位设置为奇偶校验位,所以实际上有效位只有 56 位),由于 56 位密钥长度相对较短,所以 DES 是不安全的,现在基本上已被更高级的加密标准 AES 取代。
mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import binascii # 加密模式 CBC,填充方式 PAD_PKCS5 from pyDes import des, CBC, PAD_PKCS5 def des_encrypt(key, text, iv): k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5) en = k.encrypt(text, padmode=PAD_PKCS5) return binascii.b2a_hex(en) def des_decrypt(key, text, iv): k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5) de = k.decrypt(binascii.a2b_hex(text), padmode=PAD_PKCS5) return de if __name__ == '__main__': secret_key = '12345678' # 密钥 text = 'I love Python!' # 加密对象 iv = secret_key # 偏移量 secret_str = des_encrypt(secret_key, text, iv) print('加密字符串:', secret_str) clear_str = des_decrypt(secret_key, secret_str, iv) print('解密字符串:', clear_str) # 加密字符串: b'302d3abf2421169239f829b38a9545f1' # 解密字符串: b'I love Python!'
9.3DES
简介:全称三重数据加密算法(英文名称:Triple Data Encryption Standard、Triple Data Encryption Algorithm、TDES、TDEA),是对称加密算法中的一种。70 年代初由 IBM 研发,后 1977 年被采纳为数据加密标准,它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免破解,所以严格来说 3DES 不是设计一种全新的块密码算法。
mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm from Cryptodome.Cipher import DES3 from Cryptodome import Random # 需要补位,str不是16的倍数那就补足为16的倍数 def add_to_16(value): while len(value) % 16 != 0: value += '\0' return str.encode(value) def des_encrypt(key, text, iv): # 加密模式 OFB cipher_encrypt = DES3.new(add_to_16(key), DES3.MODE_OFB, iv) encrypted_text = cipher_encrypt.encrypt(text.encode("utf-8")) return encrypted_text def des_decrypt(key, text, iv): # 加密模式 OFB cipher_decrypt = DES3.new(add_to_16(key), DES3.MODE_OFB, iv) decrypted_text = cipher_decrypt.decrypt(text) return decrypted_text if __name__ == '__main__': key = '12345678' # 密钥,16 位 text = 'I love Python!' # 加密对象 iv = Random.new().read(DES3.block_size) # DES3.block_size == 8 secret_str = des_encrypt(key, text, iv) print('加密字符串:', secret_str) clear_str = des_decrypt(key, secret_str, iv) print('解密字符串:', clear_str) # 加密字符串: b'\xa5\x8a\xd4R\x99\x16j\xba?vg\xf2\xb6\xa9' # 解密字符串: b'I love Python!'
10.AES
简介:全称高级加密标准(英文名称:Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,由美国国家标准与技术研究院 (NIST)于 2001 年发布,并在 2002 年成为有效的标准。这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用,它本身只有一个密钥,即用来实现加密,也用于解密。
mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import base64 from Cryptodome.Cipher import AES # 需要补位,str不是16的倍数那就补足为16的倍数 def add_to_16(value): while len(value) % 16 != 0: value += '\0' return str.encode(value) # 加密方法 def aes_encrypt(key, t, iv): aes = AES.new(add_to_16(key), AES.MODE_CBC, add_to_16(iv)) # 初始化加密器 encrypt_aes = aes.encrypt(add_to_16(t)) # 先进行 aes 加密 # 执行加密并转码返回 bytes encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8') return encrypted_text # 解密方法 def aes_decrypt(key, t, iv): # 初始化加密器 aes = AES.new(add_to_16(key), AES.MODE_CBC, add_to_16(iv)) # 优先逆向解密 base64 成 bytes base64_decrypted = base64.decodebytes(t.encode(encoding='utf-8')) # 执行解密密并转码返回str decrypted_text = str(aes.decrypt(base64_decrypted), encoding='utf-8').replace('\0', '') return decrypted_text if __name__ == '__main__': secret_key = '12345678' # 密钥 text = 'I love Python!' # 加密对象 iv = secret_key # 初始向量 encrypted_str = aes_encrypt(secret_key, text, iv) print('加密字符串:', encrypted_str) decrypted_str = aes_decrypt(secret_key, encrypted_str, iv) print('解密字符串:', decrypted_str) # 加密字符串: lAVKvkQh+GtdNpoKf4/mHA== # 解密字符串: I love Python!
11.RC4
简介:英文名称:Rivest Cipher 4,也称为 ARC4 或 ARCFOUR,是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。
RC4 是有线等效加密(WEP)中采用的加密算法,也曾经是 TLS 可采用的算法之一,该算法的速度可以达到 DES 加密的 10 倍左右,且具有很高级别的非线性,
虽然它在软件方面的简单性和速度非常出色,但在 RC4 中发现了多个漏洞,它特别容易受到攻击,RC4 作为一种老旧的验证和加密算法易于受到黑客攻击,现在逐渐不推荐使用了。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import base64 from Cryptodome.Cipher import ARC4 def rc4_encrypt(key, t): enc = ARC4.new(key.encode('utf8')) res = enc.encrypt(t.encode('utf-8')) res = base64.b64encode(res) return res def rc4_decrypt(key, t): data = base64.b64decode(t) enc = ARC4.new(key.encode('utf8')) res = enc.decrypt(data) return res if __name__ == "__main__": secret_key = '12345678' # 密钥 text = 'I love Python!' # 加密对象 encrypted_str = rc4_encrypt(secret_key, text) print('加密字符串:', encrypted_str) decrypted_str = rc4_decrypt(secret_key, encrypted_str) print('解密字符串:', decrypted_str) # 加密字符串: b'8tNVu3/U/veJR2KgyBw=' # 解密字符串: b'I love Python!'
12.Rabbit
简介:Rabbit 加密算法是一个高性能的流密码加密方式,2003 年首次被提出,它从 128 位密钥和 64 位初始向量(iv)创建一个密钥流。
目前没有找到有第三方库可以直接实现 Rabbit 算法,
13.RSA
简介:英文名称:Rivest-Shamir-Adleman,是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,RSA 就是他们三人姓氏开头字母拼在一起组成的,RSA 加密算法是一种非对称加密算法。
在公开密钥加密和电子商业中RSA被广泛使用。它被普遍认为是目前比较优秀的公钥方案之一。
RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击。
# -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import rsa def rsa_encrypt(pu_key, t): # 公钥加密 rsa = rsa.encrypt(t.encode("utf-8"), pu_key) return rsa def rsa_decrypt(pr_key, t): # 私钥解密 rsa = rsa.decrypt(t, pr_key).decode("utf-8") return rsa if __name__ == "__main__": public_key, private_key = rsa.newkeys(512) # 生成公钥、私钥 print('公钥:', public_key) print('私钥:', private_key) text = 'I love Python!' # 加密对象 encrypted_str = rsa_encrypt(public_key, text) print('加密字符串:', encrypted_str) decrypted_str = rsa_decrypt(private_key, encrypted_str) print('解密字符串:', decrypted_str) ''' 公钥: PublicKey(7636479066127060956100056267701318377455704072072698049978592945665550579944731953431504993757594103617537700972424661030900303472123028864161050235168613, 65537) 私钥: PrivateKey(7636479066127060956100056267701318377455704072072698049978592945665550579944731953431504993757594103617537700972424661030900303472123028864161050235168613, 65537, 3850457767980968449796700480128630632818465005441846698224554128042451115530564586537997896922067523638756079019054611200173122138274839877369624069360253, 4713180694194659323798858305046043997526301456820208338158979730140812744181638767, 1620238976946735819854194349514460863335347861649166352709029254680140139) 加密字符串: b"\x1aaeps\xa0c}\xb6\xcf\xa3\xb0\xbb\xedA\x7f}\x03\xdc\xd5\x1c\x9b\xdb\xda\xf9q\x80[=\xf5\x91\r\xd0'f\xce\x1f\x01\xef\xa5\xdb3\x96\t0qIxF\xbd\x11\xd6\xb25\xc5\xe1pM\xb4M\xc2\xd4\x03\xa6" 解密字符串: I love Python! ''' 模块 Cryptodome: # -*- coding: utf-8 -*- # @Time : 2022/9/29 10:43 # @Author : lzc # @Email : hybpjx@163.com # @File : utilsMiddlewares.py # @cnblogs : https://www.cnblogs.com/zichliang/ # @Software: PyCharm import base64 from Cryptodome.PublicKey import RSA from Cryptodome.Cipher import PKCS1_v1_5 data = "cKK8B2rWwfwWeXhz" public_key = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM1xhOWaThSMpfxFsjV5YaWOFHt+6RvS+zH2Pa47VVr8PkZYnRaaKKy2MYBuEh7mZfM/R1dUXTgu0gp6VTNeNQkCAwEAAQ==" rsa_key = RSA.import_key(base64.b64decode(public_key)) # 导入读取到的公钥 cipher = PKCS1_v1_5.new(rsa_key) # 生成对象 cipher_text = base64.b64encode(cipher.encrypt(data.encode(encoding="utf-8"))) print(cipher_text)
위 내용은 Python의 일반적인 암호화 및 암호 해독 알고리즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

단일 애플리케이션으로 휴대 전화에서 직접 XML에서 PDF 변환을 완료하는 것은 불가능합니다. 두 단계를 통해 달성 할 수있는 클라우드 서비스를 사용해야합니다. 1. 클라우드에서 XML을 PDF로 변환하십시오. 2. 휴대 전화에서 변환 된 PDF 파일에 액세스하거나 다운로드하십시오.

C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

XSLT 변환기 또는 이미지 라이브러리를 사용하여 XML을 이미지로 변환 할 수 있습니다. XSLT 변환기 : XSLT 프로세서 및 스타일 시트를 사용하여 XML을 이미지로 변환합니다. 이미지 라이브러리 : Pil 또는 Imagemagick와 같은 라이브러리를 사용하여 XML 데이터에서 이미지를 그리기 및 텍스트 그리기와 같은 이미지를 만듭니다.

XML 서식 도구는 규칙에 따라 코드를 입력하여 가독성과 이해를 향상시킬 수 있습니다. 도구를 선택할 때는 사용자 정의 기능, 특수 상황 처리, 성능 및 사용 편의성에주의하십시오. 일반적으로 사용되는 도구 유형에는 온라인 도구, IDE 플러그인 및 명령 줄 도구가 포함됩니다.

XML 구조가 유연하고 다양하기 때문에 모든 XML 파일을 PDF로 변환 할 수있는 앱은 없습니다. XML에서 PDF의 핵심은 데이터 구조를 페이지 레이아웃으로 변환하는 것입니다. XML을 구문 분석하고 PDF를 생성해야합니다. 일반적인 방법으로는 요소 트리와 같은 파이썬 라이브러리를 사용한 XML 및 ReportLab 라이브러리를 사용하여 PDF를 생성하는 XML을 구문 분석합니다. 복잡한 XML의 경우 XSLT 변환 구조를 사용해야 할 수도 있습니다. 성능을 최적화 할 때는 멀티 스레드 또는 멀티 프로세스 사용을 고려하고 적절한 라이브러리를 선택하십시오.

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.
