Модифицированный AES -CCM-версия этого примера https://www.geeksforgeeks.org/how-to-en ... hp-string/ работает, поэтому, похоже, это не проблема с моей установкой PHP.
Рабочий Python-скрипт (не волнуйтесь, ключ и одноразовый номер будут изменены):
Код: Выделить всё
from __future__ import annotations
import binascii
import base64
from cryptography.hazmat.primitives.ciphers.aead import AESCCM
def decrypt_payload(
payload: bytes, mic: bytes, key: bytes, nonce: bytes
) -> dict[str, float] | None:
cipher = AESCCM(key, tag_length=4)
try:
data = cipher.decrypt(nonce, payload + mic, None)
print("Decryption succeeded, decrypted data:", data.hex())
except ValueError as error:
print()
print("Decryption failed:", error)
return None
# =============================
# main()
# =============================
def main() -> None:
payload = bytes(bytearray.fromhex("73ad3f07fe89"))
mic = bytes(bytearray.fromhex("d8c82d06"))
key = bytes(bytearray.fromhex("D77B34645356FB1333BAD6357B38CCCF"))
nonce = bytes(bytearray.fromhex("7cc6b66242d3e3fc4512ac1267"))
decrypt_payload(payload=payload, mic=mic, key=key, nonce=nonce)
if __name__ == "__main__":
main()
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/791 ... hon-vs-php
Мобильная версия