python初心者です。
API連携をしたく、キーをハッシュ化していますが、
ターミナルでファイルを実行すると
File "test.py", line 12, in <module> from Crypto.Hash import CMAC ModuleNotFoundError: No module named 'Crypto'
というエラーが出ます。
$ php list
をした結果は以下ですが、pycryptoもpycryptodomeも入っているのですが
なぜこのようなエラーが出るのかわかりません…
※php listの結果(一部略)
parso 0.1.1 pbr 5.5.1 Pillow 2.0.0 pip 20.2.2 ply 3.4 policycoreutils-default-encoding 0.1 pyasn1 0.4.8 pycparser 2.14 pycrypto 2.6.1 pycryptodome 3.10.1 pycurl 7.19.0 pygpgme 0.3 pyliblzma 0.5.3 pylint 1.8.1 pylint-django 0.8.0 pylint-flask 0.5 pylint-plugin-utils 0.6 pystache 0.5.3 python-daemon 1.6 python-dateutil 2.8.1 pytz 2020.5 pyxattr 0.5.1 PyYAML 5.3.1 repoze.lru 0.4 requests 2.6.0 rpm-python 4.11.3 rsa 4.5
どうすればよいか、アドバイスをいただけますと幸いです。
開発環境:cloud9
Python 3.7.10
【参考】API連携の部分のテストコード test.py
import base64 sk = '*****' sk_bytes = base64.b64decode(sk) secret_key_hex = sk_bytes[1:17].hex() print(secret_key_hex) import datetime, base64, requests, json from Crypto.Hash import CMAC from Crypto.Cipher import AES sesame_id = '*****' api_key = '*****' cmd = 83 #Open history = 'test5' base64_history = base64.b64encode(bytes(history, 'utf-8')).decode() print(base64_history) headers = {'x-api-key': api_key} cmac = CMAC.new(bytes.fromhex(secret_key_hex), ciphermod=AES) ts = int(datetime.datetime.now().timestamp()) message = ts.to_bytes(4, byteorder='little') message = message.hex()[2:8] cmac = CMAC.new(bytes.fromhex(secret_key_hex), ciphermod=AES) cmac.update(bytes.fromhex(message)) sign = cmac.hexdigest() url = f'https://app.candyhouse.co/api/sesame2/{sesame_id}/cmd' body = { 'cmd': cmd, 'history': base64_history, 'sign': sign } res = requests.post(url, json.dumps(body), headers=headers) print(res.status_code, res.text)
タイプミスかと思いますが。。
誤)php list
正)pip list
回答1件
あなたの回答
tips
プレビュー