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

  1. pip install crypto;

会安装很多包:chardet, certifi, urllib3, idna, requests, pyyaml, Naked, shellescape, crypto

  1. 安装成功后,提示没有该模块,那就去python3的安装目录..Lib/site-package中查看是否有Crypto文件夹

这时你会看到有crypto文件夹,将其重命名为Crypto即可;

  1. 又出现另一个提示说没有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

  1. pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;

  2. windows下python3安装也不会成功!

这个时候pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto是一模一样的

  1. 如果使用的时候导入模块是有问题的,这个时候只要修改一个文件夹的名称就可以完美解决这个问题,

Python\Python36\Lib\site-packages,找到这个路径,下面有一个文件夹叫做crypto,将小写c改成大写C就ok了。

你可能感兴趣的:(Python加密与解密 No module named 'Crypto')