当前位置:   article > 正文

Python MD5加密的三种方法(可加盐)/base64加解密 /RSA加解密

python md5

一、实现MD5加密

方法一:MD5直接加密

  1. import hashlib
  2. # 定义用户名和密码
  3. username = 'admin'
  4. password = '123'
  5. # 计算用户名的MD5哈希值
  6. md = hashlib.md5(username.encode())
  7. md5username = md.hexdigest()
  8. print(md5username)
  9. # 计算密码的MD5哈希值
  10. md = hashlib.md5(password.encode())
  11. md5password = md.hexdigest()
  12. print(md5password)

运行看结果:

21232f297a57a5a743894a0e4a801fc3
202cb962ac59075b964b07152d234b70

建议加密是否正确:

方法二:MD5+盐加密,将盐拼接在原密码后

  1. import hashlib
  2. text1='123456'
  3. print(text1)
  4. SALE=text1[:4] # 设置盐值
  5. print(str(text1)+SALE)
  6. md_sale=hashlib.md5((text1+SALE).encode()) # MD5加盐加密方法一:将盐拼接在原密码后
  7. md5salepwd=md_sale.hexdigest()
  8. print(md5salepwd)

输出结果:

方法三:MD5+盐加密,将password整体插入SALE的每个元素之间

  1. import hashlib
  2. text1='123456'
  3. print(text1)
  4. SALE=text1[:4] # 设置盐值
  5. print(str(text1).join(SALE))
  6. md_sale=hashlib.md5((str(text1).join(SALE)).encode()) # MD5加盐加密方法二:将password整体插入SALE的每个元素之间
  7. md5salepwd=md_sale.hexdigest()
  8. print(md5salepwd)

输出结果:

二、实现base64加密解密

1、Python实现base64加密,可以使用base64库。

代码如下:

  1. import base64
  2. # 加密
  3. username = "admin"
  4. base64_username = base64.b64encode(username.encode('utf-8')).decode()
  5. print(base64_username)
  6. password = "123"
  7. base64_password = base64.b64encode(password.encode('utf-8')).decode()
  8. print(base64_password)

运行结果:

  1. YWRtaW4=
  2. MTIz
  3. Process finished with exit code 0

对比结果:

2、 Python实现base64解密,可以使用base64库。

  1. import base64
  2. import requests
  3. # 加密
  4. username = "admin"
  5. base64_username = base64.b64encode(username.encode('utf-8')).decode()
  6. print(base64_username)
  7. password = "123"
  8. base64_password = base64.b64encode(password.encode('utf-8')).decode()
  9. print(base64_password)
  10. data={'username':base64_username,'password':base64_password}
  11. response=requests.post("http://*****:5000/base64login",params=data)
  12. print(response.json())
  13. # 解密
  14. str1 = base64.b64decode(base64_username.encode('utf-8')).decode()
  15. print(str1)
  16. str2 = base64.b64decode(base64_password.encode('utf-8')).decode()
  17. print(str2)

打印结果:

  1. YWRtaW4=
  2. MTIz
  3. {'error_code': 0, 'message': 'Base64加密登陆成功!'}
  4. admin
  5. 123
  6. Process finished with exit code 0

三、实现RSA加密解密

一、RSA加密算法

RSA加密算法是一种非对称加密算法,加密的秘钥是由公钥和私钥两部分组成秘钥对,公钥用来加密消息,私钥用来解密消息,公钥是公开的,给对方进行加密,私钥则是用户自己保留,用来对加密的数据进行解密。

公钥pem文件格式:以-----BEGIN PUBLIC KEY-----标记打头,以-----END PUBLIC KEY-----标记结尾,中间部分即为公钥

  1. -----BEGIN PUBLIC KEY-----
  2. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM6dGIA2naE3nGXi6O9vHskRSj
  3. uC5hn30msl+bk1yJl4NUqH1et7S3C0NWMDHPkC0vyWtp8HTpV1bFN747zToegLOs
  4. n1+zsf1LSObVce+UU76w1J3oAHBPCHSTt+WuTe+FMbQzvX1CQAdzdqCvYFvb+b9Y
  5. +L+ajto9raO0cfdGawIDAQAB
  6. -----END PUBLIC KEY-----

私钥pem文件格式:以-----BEGIN RSA PRIVATE KEY-----打头,以-----END RSA PRIVATE KEY-----结尾,中间部分即为私钥

  1. -----BEGIN RSA PRIVATE KEY-----
  2. MIICWwIBAAKBgQDM6dGIA2naE3nGXi6O9vHskRSjuC5hn30msl+bk1yJl4NUqH1e
  3. t7S3C0NWMDHPkC0vyWtp8HTpV1bFN747zToegLOsn1+zsf1LSObVce+UU76w1J3o
  4. AHBPCHSTt+WuTe+FMbQzvX1CQAdzdqCvYFvb+b9Y+L+ajto9raO0cfdGawIDAQAB
  5. AoGACjUBb22AGdFLiRKK7isl3NtTNF6JzOoVYVaURZsfCmmGLLLh39R1x4Jjncjz
  6. yjuLzKwTUikcobzsgRFoQ/FSmjiMkQcIFoE20qJiYOOnB8T346OZfyWSMQqTAWTa
  7. KnT1Ih74x2aft4Sf3NwkDpqEqU4nksEWmebZ+ynStaCaHKkCQQDj1FN0D8b2knbl
  8. m0SXvDwhKX4R6U+ZZtDR1XwLwlFuz9xSFfuQ797O91pJwHagB8jWkCSYYDeIDyYd
  9. hQCDcRIzAkEA5kAcnyryeORaMbuvHqq+fulff+u0bp4Crply4qKI5PV2wVskQ1z0
  10. DzRyao8n9rED+kxYM5E5HXc4q9nkzUFy6QJAauTrRvBEHNp5eJ9SHpNN7w1Fvmem
  11. VkY8QceVjPreNEzIhacUwlsZQigiL6pivhEI9UrqMKgsReU9r+oAZKt/qwJAU5Pg
  12. D9K6EzHon3beOUaHQXAa70cyxphqptAiiKuw/1MumT8pKZ6bJM3H3nA6dGyK4hdG
  13. SOmlDtIQ6yh7yhnAyQJAPKCoBoiR6f+feOwBrrh0KTbHucZygH4y9bPW+tz5nrwt
  14. ChypQ8vu7qG7Arcw9jYJ2HJFXHeQ3Hx2FjhruYfwew==
  15. -----END RSA PRIVATE KEY-----

二、使用Python进行RSA加密解密

1、模块安装
pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
2、代码示例
  1. import base64
  2. from Crypto import Random
  3. from Crypto.Cipher import PKCS1_v1_5
  4. from Crypto.PublicKey import RSA
  5. # 伪随机数生成器
  6. random_generator = Random.new().read
  7. # rsa算法生成秘钥对实例对象:1024是秘钥的长度
  8. rsa = RSA.generate(1024, random_generator)
  9. #生成私钥并保存到pem文件,如果知道秘钥值key3也可以不保存,拼接上begin/end标识后加载直接用,如key3 = '-----BEGIN PUBLIC KEY-----\n' + key3 + '\n' + '-----END PUBLIC KEY-----'
  10. private_pem = rsa.exportKey()
  11. #print(private_pem)
  12. with open("./private.pem", "wb") as f: #wb,以二进制格式写入文件到当前文件夹中
  13. f.write(private_pem)
  14. #生成公钥并保存到pem文件,当然也可以不保存直接用,即key1
  15. public_pem = rsa.publickey().exportKey()
  16. with open("./public.pem", "wb") as f: #wb,以二进制格式写入文件
  17. f.write(public_pem)
  18. #plaintext:需要加密的明文文本,公钥加密,私钥解密
  19. plaintext = 'admin'
  20. #加密过程
  21. # 1:加载公钥
  22. with open("public.pem") as f1:
  23. key1 = f1.read() #从pem文件中读取公钥内容,包括begin头/end尾标识
  24. public_key = RSA.import_key(key1) #加载公钥key1
  25. #:2:加密
  26. cipher_rsa = PKCS1_v1_5.new(public_key)
  27. #cipher_text 即为加密后的密文
  28. cipher_text = base64.b64encode(cipher_rsa.encrypt(plaintext.encode('utf-8')))
  29. #打印加密结果
  30. #Python3的字符串的编码语言用的是unicode编码,由于Python的字符串类型是str,如果直接打印出来print(cipher_text),会是b'字符串',解决方案是后面添加decode('utf-8')
  31. print(cipher_text.decode('utf-8'))
  32. # 读取私钥
  33. with open("private.pem") as f2:
  34. key2 = f2.read()#从pem文件中读取私钥内容,包括begin头/end尾标识
  35. private_key = RSA.import_key(key2)#加载私钥key2
  36. # 解密
  37. cipher_rsa = PKCS1_v1_5.new(private_key)
  38. text = cipher_rsa.decrypt(base64.b64decode(cipher_text),random_generator)
  39. #打印解密结果
  40. #Python3的字符串的编码语言用的是unicode编码,由于Python的字符串类型是str,如果直接打印出来print(text),会是b'字符串',解决方案是后面添加decode('utf-8')
  41. print(text.decode('utf-8'))
3、运行结果
  1. uORTWLnlQ8IdBY3BJIQjeaPfL7aAvBf8VB0zku6LKRZJvK2vlqEyX77i7JPXx7b4OrK86/c93McR72oOdujY5PY/K6aAXz0FYmkN01s6eYfFC5ODRLxgCuVuE+6+QLUc3b8kYOQ11Q3sXRnCJyjWdeGu/IkBZ3WSn8WlHxCDSK8=
  2. admin
  3. Process finished with exit code 0
4、代码示例2
  1. from Crypto.PublicKey import RSA
  2. from Crypto.Cipher import PKCS1_OAEP
  3. import base64
  4. # 生成RSA密钥对
  5. key = RSA.generate(2048)
  6. # 加密数据
  7. public_key = key.publickey()
  8. cipher = PKCS1_OAEP.new(public_key)
  9. encrypted_data = cipher.encrypt(b'admin')
  10. encoded_encrypted_data = base64.b64encode(encrypted_data)
  11. print(encoded_encrypted_data.decode('utf-8'))
  12. # 解密数据
  13. cipher = PKCS1_OAEP.new(key)
  14. decoded_encrypted_data = base64.b64decode(encoded_encrypted_data)
  15. decrypted_data = cipher.decrypt(decoded_encrypted_data)
  16. print(decrypted_data.decode())

运行结果

  1. PZssDKs036HTNWA/EGKIF9m5S+8LZ9vNadzXzx19tLsT1F7M4JZHYGlS0ep54q5ICSp4daPR2RZMjRfotQiWZrUE1MWz25N1ocyegtbFplscOczhJ33RYGmVheCfJnV+Hxkxu77S0K0GACeRwRRZ8XcSmgMAqZ0EiDKgpNZ5NBweDtula0oH26gQa8o5fB49AwZ28JEGaWsTeuDiLgG/u3fotqcDFqY2bMeFntISNQ5MzSI1RNdIuK73phFNgIlELmw14i3UrYlSEJdpwj2IrQeYZbXQzEzQA0mDRnUvRzF/pCKX3Kg7rnAcERszhpuKzAzGZSQEEjnUGAq3tXvvfw==
  2. admin
  3. Process finished with exit code 0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/470031
推荐阅读
相关标签
  

闽ICP备14008679号