mac无法使用Crypto.Cipher import AES
1、python查看项目和python版本的地址
新建python文件
输入:
import sys
print(sys.path)
2、Mac查看Python3的安装路径
which python3
3、Mac如何进入路径
然后输入路径
4、Mac-Pycharm-python3.8
from Crypto.Cipher import AES总是失败
https://blog.csdn.net/sinat_38695417/article/details/109291892?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog&utm_relevant_index=1
https://blog.csdn.net/RIN233/article/details/111383346?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&utm_relevant_index=6
在Pycharm里面也无法导入Crypto.Cipher包,原因是
1、Crypto.Cipher包需要自己的python版本的文件夹自己有(由于我只有Conda会显示完整的python文件夹,pycharm自己生成的python版本只是一个文件,没有文件夹,找不到site-packages文件夹)
所以我让项目使用anaconda3的python版本。
1、在mac终端输入:
pip3 install pycryptodome
注意:我的mac默认python编译器是anaconda3的,所以pycryptodome会直接下载到Conda。
2、查看python文件里面的site-packages
首先查看anaconda3的地址:终端输入:which python3
(base) yaochen@YaodeMacBook-Air ~ % which python3 /Users/yaochen/opt/anaconda3/bin/python3
然后在访达中查找文件Crypto:左上角的前往-前往文件夹-输入:/用户/yaochen/opt/anaconda3/lib
然后一步步点击,发现Crypto路径如下:
/Users/yaochen/opt/anaconda3/lib/python3.9/site-packages/Crypto
然后在pycharm中项目使用anaconda3的python
需要先导入pycryptodome
python 在 Windows下使用AES时要安装的是pycryptodome 模块
pip install pycryptodome
python 在 Linux下使用AES时要安装的是pycrypto模块
pip install pycrypto
3、现在可以使用 Crypto.Cipher import AES
# coding:utf-8 import base64 from Crypto.Cipher import AES class AESCrypt: def __init__(self,key,mode,iv): self.key = key # 密钥 self.mode = mode # 模式 self.iv = iv #初始化向量 def encrpyt(self,text): '''加密''' num = AES.block_size - len(text) % AES.block_size #需要填充的字符个数 text_pad = (text + num*chr(num)).encode('utf-8') #填充后的字节串 crpytor = AES.new(self.key, self.mode, self.iv) encrypt_data = crpytor.encrypt(text_pad) #对数据进行加密 return base64.b64encode(encrypt_data).decode() def decrypt(self,text): '''解密''' data = base64.b64decode(text.encode()) crpytor = AES.new(self.key, self.mode, self.iv) decrypt_data = crpytor.decrypt(data) #对数据进行解密 res = decrypt_data[:-decrypt_data[-1]].decode()#去除多余字符 return res if __name__ == '__main__': #key = random._urandom(16) 可以利用random模块随机生成 key = b'\xc7(\xa4rq{\x89r\xd05kH\xbf^\x8a\x16' #密钥,长度可以是16,24或32个字节 mode = AES.MODE_CBC iv = b'-\x95)\x82\x1a\x00\xde/^:\xd3\xbeXK9\xd2' #初始化向量,固定16个字节长度 aes = AESCrypt(key,mode,iv) text = input('请输入需要AES加密的数据:') en_data = aes.encrpyt(text) print('%s 经过加密得到:%s'%(text,en_data)) de_data = aes.decrypt(en_data) print('%s 经过解密得到:%s'%(en_data,de_data))