python3 安装Crypto.Cipher import AES

Python07

python3 安装Crypto.Cipher import AES,第1张

问题背景:

m3u8文件加密时,使用“from Crypto.Cipher import AES”相关函数解密:

#EXT-X-KEY 记录了加密的方式,一般是AES-128以及加密的KEY信息

出现问题:

from Crypto.Cipher import AES

pip install Crypto

出错

解决办法:

安装crypto库(首字母c是小写)

pip install crypto

进入python的库管理位置,site-packages文件夹,找到crypto,将其首字母c改为大写

判断是否解决的方式:

from Crypto.Cipher import AES

不会报错,说明成功。

备注:

如果在C:\Python36\Lib\site-packages\Crypto目录下没有找到:\Cipher目录。

可以尝试安装pycryptodome库 或 pycrypto库:

pip install pycryptodome

pip install pycrypto (安装这个库,基本会失败,会报错)

在刚开始知道这个模块的时候,连基本的Crypto模块的安装都花了很多很多时间来搞,也不知道什么情况反正是折腾很久了才安装起的,记得是包安装起来了,但使用的时候始终提示找不到Crypto.Cipher模块。然后怎么解决的呢?

一、把我的python换成了64位的,本来电脑就是64位的也不知道之前是啥情况安装成32位的了。(O(∩_∩)O哈哈~)

二、安装了VCForPython27.msi

三、在cmd中执行:

pip install pycrypto -i http://mirrors.aliyun.com/pypi/simple/1

经过上边儿的几个步骤,我是能够成功执行

from Crypto.Cipher import AES1

现在上一个实例代码:

# !/usr/bin/env python

# coding: utf-8

'''

'''

from Crypto.Cipher import AES

from binascii import b2a_hex, a2b_hex

class MyCrypt():

def __init__(self, key):

self.key = key

self.mode = AES.MODE_CBC

def myencrypt(self, text):

length = 16

count = len(text)

print count

if count <length:

add = length - count

text= text + ('\0' * add)

elif count >length:

add = (length -(count % length))

text= text + ('\0' * add)

# print len(text)

cryptor = AES.new(self.key, self.mode, b'0000000000000000')

self.ciphertext = cryptor.encrypt(text)

return b2a_hex(self.ciphertext)

def mydecrypt(self, text):

cryptor = AES.new(self.key, self.mode, b'0000000000000000')

plain_text = cryptor.decrypt(a2b_hex(text))

return plain_text.rstrip('\0')

if __name__ == '__main__':

mycrypt = MyCrypt('abcdefghjklmnopq')

e = mycrypt.myencrypt('hello,world!')

d = mycrypt.mydecrypt(e)

print e

print d

12345678910111213141516171819202122232425262728293031323334353637383940414243

在cmd中执行结果:

本来以为这是个比较简单的东西,网上一搜一大把。搜索结果气的我自己看文档写了一个。

首先安装pycryptodome或者pycryptodomex 用pip 安装,安装之后需要修改包名crypto改为Crypto

我是采用ECB模式加密你也可以用其他模式加密,模式区别可以看这篇 https://www.cnblogs.com/liangxuehui/p/4651351.html 。

秘钥加密解密需要统一。