DF-2367 / checkvec.py
import subprocess, binascii def enc(keyhex, pthex, bits): p = subprocess.run(["openssl","enc",f"-aes-{bits}-ecb","-K",keyhex,"-nopad"], input=binascii.unhexlify(pthex), capture_output=True) return binascii.hexlify(p.stdout).decode() vecs = [ ("FIPS197-C1","000102030405060708090a0b0c0d0e0f","00112233445566778899aabbccddeeff","69c4e0d86a7b0430d8cdb78070b4c55a",128), ("FIPS197-C2","000102030405060708090a0b0c0d0e0f1011121314151617","00112233445566778899aabbccddeeff","dda97ca4864cdfe06eaf70a0ec0d7191",192), ("FIPS197-C3","000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","00112233445566778899aabbccddeeff","8ea2b7ca516745bfeafc49904b496089",256), ("SP80038A-F11-b1","2b7e151628aed2a6abf7158809cf4f3c","6bc1bee22e409f96e93d7e117393172a","3ad77bb40d7a3660a89ecaf32466ef97",128), ("SP80038A-F11-b2","2b7e151628aed2a6abf7158809cf4f3c","ae2d8a571e03ac9c9eb76fac45af8e51","f5d3d58503b9699de785895a96fdbaaf",128), ("SP80038A-F11-b3","2b7e151628aed2a6abf7158809cf4f3c","2c6f2d78583e447ab3ae6d8b2a14b7c7","43b1cd7f598ece23881b00e3ed030688",128), ("SP80038A-F11-b4","2b7e151628aed2a6abf7158809cf4f3c","46f0514f71a9f206e6b358e3291ac21a","7b0c785e27e8ad3f8223207104725dd4",128), ("SP80038A-F13-b1","8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b","6bc1bee22e409f96e93d7e117393172a","bd334f1d6e45f25ff712a214571fa5cc",192), ("SP80038A-F14-b1","8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b","ae2d8a571e03ac9c9eb76fac45af8e51","9b6e902c96a1d54acbe72f5c8ad9b6b4",192), ("SP80038A-F15-b1","603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff6","6bc1bee22e409f96e93d7e117393172a","f3eed1bdb5d2a03c064b5a7e3db181f8",256), ("SP80038A-F17-b1","603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff6","46f0514f71a9f206e6b358e3291ac21a","4b与发展7b0c785e27e8ad3f8223207104725dd4",256), ] ok=True for name,k,pt,exp,bits in vecs: got=enc(k,pt,bits) status = "OK " if got==exp else "DIFF" if got!=exp: ok=False print(f"{status} {name} aes-{bits} got={got} exp={exp}") else: print(f"{status} {name} aes-{bits} ct={got}") print("ALL-VALID" if ok else "SOME-INVALID") |