百木园-与人分享,
就是让自己快乐。

【Python】数据加密解密技术

Python如何加密解密?感兴趣的小伙伴可以举一下脚,我看看有多少。咳咳咳,正式开始了,今天给大家分享的是Python如何加密解密,感兴趣的小伙伴要认真学起来。

在这里插入图片描述

前言

加密算法主要分为:哈希算法、对称加密算法、非对称加密算法。

•哈希算法:MD5、SHA256

•对称加密算法:DES、AES、CBC

•非对称加密算法:RSA

此外,还有一种编码算法,叫Base64(注意它不是加密算法),也是用的比较多的。

在这里插入图片描述

一、哈希算法

哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公共函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。

特点:

•易压缩:对于任意大小的输入X,Hash值的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。

•易计算:对于任意给定的消息,计算其Hash值比较容易。

•单向性:对于给定的Hash值,要找到使得在计算上是不可行的,即求Hash的逆很困难。在给定某个哈希函数H和哈希值H(M)的情况下,得到M在计算上是不可行的,即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。

在这里插入图片描述

MD5加密

###Python学习交流Q群:906715085###
import hashlib

def get_md5_data(inStr:str):   
\"\"\"
  :param inStr: 待加密字符串
    :return: 加密结果
      \"\"\"  
 md5 = hashlib.md5()     #实例化对象   
 md5.update(inStr.encode(\'utf-8\'))   #使用update方法加密   
 return md5.hexdigest()          #调用hexdigest方法获取加密结果
 
if __name__ == \'__main__\':  
 print(get_md5_data(\'asfa\')) 
   #输出结果
   #9fa16ee8683740b1883e5844d8c288ac

 

SHA256加密

import hashlib

def get_sha256_data(inStr:str):
   \"\"\" 
    :param inStr: 待加密字符串 
     :return: 加密结果 
      \"\"\"  
       sha256 = hashlib.sha256()     #实例化对象  
        sha256.update(inStr.encode(\'utf-8\'))   #使用update方法加密   
        return sha256.hexdigest()          #调用hexdigest方法获取加密结果
        
if __name__ == \'__main__\':  
 print(get_sha256_data(\'asfa\'))
 #输出结果
 #aaf01ca9bbd8ca8cc1703f99e62c71b56e4d01489803bf5e97bbcec646504e52

 

二、对称加密算法

双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。

优点:

•速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。

缺点:

•在数据传送前,发送和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这使得收、发双方 所拥有的钥匙数量巨大,秘钥管理成为双方的负担。

ECB

from Crypto.Cipher import AES

password = b\'1234567812345678\' #秘钥,b就是表示为bytes类型
text = b\'abcdefghijklmnhi\' #需要加密的内容,bytes类型
aes = AES.new(password,AES.MODE_ECB) #创建一个aes对象
#AES.MODE_ECB 表示模式是ECB模式
en_text = aes.encrypt(text) #加密明文
print(\"密文:\",en_text) #加密明文,bytes类型
den_text = aes.decrypt(en_text) # 解密密文
print(\"明文:\",den_text)

#密文:b\'WU\\xe0\\x0e\\xa3\\x87\\x12\\x95\\\\]O\\xd7\\xe3\\xd4 )\'
#明文:b\'abcdefghijklmnhi\'

 

在这里插入图片描述

CBC

from Crypto.Cipher import AES
#password = b\'1234567812345678\' #秘钥,b就是表示为bytes类型
#iv = b\'1234567812345678\' # iv偏移量,bytes类型
#text = b\'abcdefghijklmnhi\' #需要加密的内容,bytes类型
#aes = AES.new(password,AES.MODE_CBC,iv) #创建一个aes对象#
 # AES.MODE_CBC 表示模式是CBC模式
 # en_text = aes.encrypt(text)
 # print(\"密文:\",en_text) #加密明文,bytes类型
 # aes = AES.new(password,AES.MODE_CBC,iv) #CBC模式下解密需要重新创建一个aes对象
 # den_text = aes.decrypt(en_text)
 # print(\"明文:\",den_text)#
 # 
 密文:b\'\\x93\\x8bN!\\xe7~>\\xb0M\\xba\\x91\\xab74;0\'
 # 明文:b\'abcdefghijklmnhi\'

 

在这里插入图片描述

三、非对称加密算法

一对秘钥由公钥和私钥组成(可以使用很多对密钥)。

私钥解密公钥加密数据,公钥解密私钥加密数据(私钥公钥可以互相加密解密)

优点:

•安全

缺点:

•速度较慢

代表:

•RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法)。

•使用广泛的是RAS算法,Elgamal其次。

import rsa

str = \'asfa\'
(pubkey,privkey) = rsa.newkeys(1024)    #实例化对象
pwd = rsa.encrypt(str.encode(\'utf-8\'),pubkey)   #公钥加密
print(\"加密结果===》\",pwd.hex())depwd = rsa.decrypt(pwd,privkey)#私钥解密
print(\"解密结果===》\", depwd.decode())

#加密结果===》 6bc0709e403e3e443a97e267929c6f1154c0b5b74a8b7320d89285d626498ba47e394cbdd8ee2c06f7dfac17291c5af317b5d7f7a2bf3e7691a9a6639c06a7957877ebec8eeece2c771b6a1ac3cc079da485acd5682ed8f090b3eb935ae637cd8fab92e656e4b6d8d312b409a141af8ecbc0b972ada068fe116343c57eb487fe
# 解密结果===》 asfa

 

双重加密–公钥加密,私钥解密,私钥签名,公钥验签

在这里插入图片描述

在这里插入图片描述

四、Base64编码

Base64是编码技术而不是加密技术。可以将任意的字节数组数据,通过算法,声称只有(大小写英文、数字、+、/)(一共64个字符)内容表示的字符串数据。即将任意的内容转换为可见的字符串形式。提供解码功能。

import base64
str = \'asfa\'
ba64 = base64.b64encode(str.encode(\'UTF-8\'))     #编码
print(\"编码结果====》\",ba64)
reba64 = base64.b64decode(ba64)          #调用hexdigest方法获取加密结果
print(\"解码字节结果====》\",reba64)
print(\"解码结果====》\",reba64.decode(\'utf-8\'))

#编码结果====》 b\'YXNmYQ==\'
#解码字节结果====》b\'asfa\'
#解码结果====》 asfa

 

最后
这个小技巧大家都掌握了吗?掌握的记得点赞,没掌握的记得点赞收藏,这一章到这里就结束了,想看什么可以告诉我。看这密密麻麻的代码,必须来一个大大的赞。

在这里插入图片描述


来源:https://www.cnblogs.com/123456feng/p/16078805.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【Python】数据加密解密技术

相关推荐

  • 暂无文章