python 密码学 模块_Python加密与解密 No module named 'Crypto'

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了。

你可能感兴趣的:(python,密码学,模块)