首页
随机
最近更改
特殊页面
社群首页
参数设置
关于WHY42
免责声明
WHY42
搜索
用户菜单
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁ML-KEM”︁的源代码
←
ML-KEM
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<ref>https://asecuritysite.com/hybrid/go_hybrid3</ref> <syntaxhighlight lang="python"> from kyber_py.kyber import Kyber512,Kyber768,Kyber1024 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives import padding import binascii import os import sys def go_encrypt(msg,method,mode): cipher = Cipher(method, mode) encryptor = cipher.encryptor() ct = encryptor.update(msg) + encryptor.finalize() return (ct) def go_decrypt(ct,method,mode): cipher = Cipher(method, mode) decryptor = cipher.decryptor() return (decryptor.update(ct) + decryptor.finalize()) def pad(data,size=128): padder = padding.PKCS7(size).padder() padded_data = padder.update(data) padded_data += padder.finalize() return(padded_data) def unpad(data,size=128): padder = padding.PKCS7(size).unpadder() unpadded_data = padder.update(data) unpadded_data += padder.finalize() return(unpadded_data) msg="Hello" kemtype=0 if (len(sys.argv)>1): msg=str(sys.argv[1]) if (len(sys.argv)>2): kemtype=int(sys.argv[2]) iv = os.urandom(16) pk, sk = Kyber512.keygen() key, c = Kyber512.encaps(pk) if (kemtype==1): pk, sk = Kyber768.keygen() key, c = Kyber768.encaps(pk) if (kemtype==2): pk, sk = Kyber1024.keygen() key, c = Kyber1024.encaps(pk) padded_data=pad(msg.encode()) cipher=go_encrypt(padded_data,algorithms.AES(key), modes.CBC(iv)) print ("Message: ",msg) print(f"Kyber key created: {iv.hex()}") print(f"IV: {key.hex()}") print ("Cipher (encrypted with Kyber key): ",binascii.b2a_hex(cipher)) if (kemtype==0): key = Kyber512.decaps(sk, c) print("\nKyber512") elif (kemtype==1): key = Kyber768.decaps(sk, c) print("\nKyber768") elif (kemtype==2): key = Kyber1024.decaps(sk, c) print("\nKyber1024") print(f"Kyber key recovered: {key.hex()}") plain=go_decrypt(cipher,algorithms.AES(key), modes.CBC(iv)) data=unpad(plain) print (f"Decrypted: {data.decode()}") </syntaxhighlight> <syntaxhighlight lang="rust"> Message: Hello Kyber key created: 9e764059f117e696c1b0bba523d29b9f IV: c3d71b07663cc0e38af2a4d76ded8f0c5871645b819a825e12a04057b53b246a Cipher (encrypted with Kyber key): b'b1ce5acd63f0adc42d9afd8c1c3bacd5' Kyber512 Kyber key recovered: c3d71b07663cc0e38af2a4d76ded8f0c5871645b819a825e12a04057b53b246a Decrypted: Hello </syntaxhighlight>
返回
ML-KEM
。