#-*- coding: utf-8 -*- from aespython import key_expander, aes_cipher, ocb_mode import json import base64 def hex2byte(hexstring): return map(ord, hexstring.decode("hex")) def byte2hex(byteslist): return str(bytearray(byteslist)).encode("hex") if __name__=="__main__": KE = key_expander.KeyExpander(128) key = hex2byte('12538243c49f1c58e6f7b0687bbd65b2') expanded_key = KE.expand(key) aes_cipher_128 = aes_cipher.AESCipher(expanded_key) aes_ocb_128 = ocb_mode.OCBMode(aes_cipher_128, 16) iv = hex2byte('250c3041c00a605a4100e264abbc588b') aes_ocb_128.set_iv(iv) plaintext = "La chaire est triste, hélas ! et j'ai lu tous les livres.".encode("hex") header = "".encode("hex") (tag,ciphertext) = aes_ocb_128.encrypt_block(hex2byte(plaintext), hex2byte(header)) sjcl_object = {"iv": base64.b64encode(bytearray(iv)).rstrip("="), "mode": "ocb2", "tag": 128, "ct": base64.b64encode(bytearray(ciphertext) + bytearray(tag)).rstrip("=") } print json.dumps(sjcl_object)