DES加密
- 全称为Data EncryptionStandard,即数据加密标准,是一种使用密钥加密的块算法
- 入口参数有三个:Key、Data、Mode
- Key为7个字节共56位,是DES算法的工作密钥;
- Data为8个字节64位,是要被加密或被解密的数据;
- Mode为DES的工作方式,有两种:加密或解密
3DES(即Triple DES)是DES向AES过渡的加密算法
- 使用两个密钥,执行三次DES算法
- 加密的过程是加密-解密-加密
- 解密的过程是解密-加密-解密
示例代码
from Crypto.Cipher import DES
key = b'abcdefgh' # 密钥 8位或16位,必须为bytes
def pad(text):
"""
# 加密函数,如果text不是8的倍数【加密文本text必须为8的倍数!】,那就补足为8的倍数
:param text:
:return:
"""
while len(text) % 8 != 0:
text += ' '
return text
des = DES.new(key, DES.MODE_ECB) # 创建一个DES实例
text = 'Python rocks!'
padded_text = pad(text)
encrypted_text = des.encrypt(padded_text.encode('utf-8')) # 加密
print(encrypted_text)
# rstrip(' ')返回从字符串末尾删除所有字符串的字符串(默认空白字符)的副本
plain_text = des.decrypt(encrypted_text).decode().rstrip(' ') # 解密
print(plain_text)
神仙模块 from Crypto.Cipher import DES
python版本:python3,系统:win
- pip install crypto;
会安装很多包:chardet, certifi, urllib3, idna, requests, pyyaml, Naked, shellescape, crypto
- 安装成功后,提示没有该模块,那就去python3的安装目录..Lib/site-package中查看是否有Crypto文件夹
这时你会看到有crypto文件夹,将其重命名为Crypto即可;
- 又出现另一个提示说没有Crypto.Cipher,“ModuleNotFoundError:No module named ‘Crypto.Cipher’”;这时需要卸载pycrypto:
pip uninstall pycrypto,然后安装pycryptodome,pip install pycryptodome,即可。
Crypto 模块正确的安装方法
pip uninstall crypto pycryptodome
pip install pycryptodome
Crypto 历史原因(可以忽略)
你会发现site-packages下的该模块的目录名已经是大写了-Crypto
pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;
windows下python3安装也不会成功!
这个时候pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto是一模一样的
- 如果使用的时候导入模块是有问题的,这个时候只要修改一个文件夹的名称就可以完美解决这个问题,
Python\Python36\Lib\site-packages,找到这个路径,下面有一个文件夹叫做crypto,将小写c改成大写C就ok了。