Python中的CMAC-AES

时间:2014-01-30 18:00:19

标签: python encryption

我正在尝试在Django应用程序中实现与此api的集成。http://pdn.pearson.com/pearson-learningstudio/apis/authentication/authentication-use-cases/use-case-submit-request-using-oauth2-assertion_x

除了使用断言认证方法外,几乎所有工作都有效。我需要使用CMAC-AES加密断言字符串,我不知道该怎么做。

他们的所有示例代码都使用内置的语言库,我找不到任何可以让我在Python中执行此操作的库。我一整天都在谷歌上搜索,却找不到任何东西。

有谁知道我在哪里可以找到一个可以让我这样做的图书馆?或者如何解决它

由于

-Alex

2 个答案:

答案 0 :(得分:2)

PyCrypto的当前alpha版本包含CMAC作为模块Crypto.Hash.CMAC

例如:

from Crypto.Hash import CMAC
from Crypto.Cipher import AES

secret = b'Sixteen byte key'
cobj = CMAC.new(secret, ciphermod=AES)
cobj.update(b'Hello')
print cobj.hexdigest() 

答案 1 :(得分:1)

PyCryptoPlus库实现了CMAC-AES。这是AES.py文档的摘录:

 CMAC EXAMPLE:
-------------
NIST publication 800-38B: http://csrc.nist.gov/publications/nistpubs/800-38B/Updated_CMAC_Examples.pdf

>>> key = '2b7e151628aed2a6abf7158809cf4f3c'.decode('hex')
>>> plaintext = '6bc1bee22e409f96e93d7e117393172a'.decode('hex')
>>> cipher = AES.new(key,AES.MODE_CMAC)
>>> cipher.encrypt(plaintext).encode('hex')
'070a16b46b4d4144f79bdd9dd04a287c'

代码:http://repo.or.cz/w/python-cryptoplus.git/tree/HEAD