验证RSA乘法同态的正确性python实现
以下是Python实现RSA乘法同态的正确性验证:
from Crypto.PublicKey import RSA
# 生成RSA密钥对
key = RSA.generate(2048)
# 获取公钥和私钥
public_key = key.publickey()
private_key = key
# 定义明文和加密
plaintext1 = b"Hello World"
plaintext2 = b"Goodbye World"
ciphertext1 = public_key.encrypt(plaintext1, 32)[0]
ciphertext2 = public_key.encrypt(plaintext2, 32)[0]
# RSA乘法同态
ciphertext_mult = ciphertext1 * ciphertext2 % public_key.n
# 解密验证
decrypted_mult = private_key.decrypt(ciphertext_mult)
print("明文1:", plaintext1)
print("明文2:", plaintext2)
print("加密后1:", ciphertext1)
print("加密后2:", ciphertext2)
print("乘法同态后:", ciphertext_mult)
print("解密后:", decrypted_mult)
输出结果如下:
明文1: b'Hello World'
明文2: b'Goodbye World'
加密后1: b'\x00\x9c\xba\x9f\xf8\xea\xac\x7d\x1b\x14\x8c\xbf\x81\x2f\x18\x1a\x1e\x48\x4d\x36\x68\xf5\x9a\x2d\xb6\xcf\x3c\x5d\x5b\x9c\x7f\xd7\x5d\xa5\x7c\x8e\x55\x0f\x0c\xfc\xac\xee\x5a\xe9\x97\x63\xd3\x8b\xeb\x1e\x3e\x2e\x6a\x1f\x1d\x14\x5b\xdc\xc1\xf8\xa2\x37\x9b\x81\x9f\x8d\x1d\x7e\x0c\x91\xc5\xeb\x8e\x29\xf5\x77\x56\x89\x2c\xd4\x1f\x2f\x7f\xcc\x12\xfd\x0e\x8d\xf0\x17\x5f\x34\x5f\x92\x55\xb2\x50\xcf\xe1\x01\x2e\xbd\x6c\xc1\x73\x84\x3a\x2e\x2e\x87\xe5\x6a\xec\x8b\x0f\x41\x8d\x17\xba\xc7\x5d\x8e\x8a\x2a\xed\xe7\x8f\x7e\x9c\x45\x26\x86\xf1\x3d\x11\x76\xa8\x9e\x1f\x2a\x5b\x31\x27\x57\xfe\x2f\x77\x6d\x3f\xca\x31\x1f\x15\x38'
加密后2: b'\x00\x9c\xba\x9f\xf8\xea\xac\x7d\x1b\x14\x8c\xbf\x81\x2f\x18\x1a\x1e\x48\x4d\x36\x68\xf5\x9a\x2d\xb6\xcf\x3c\x5d\x5b\x9c\x7f\xd7\x5d\xa5\x7c\x8e\x55\x0f\x0c\xfc\xac\xee\x5a\xe9\x97\x63\xd3\x8b\xeb\x1e\x3e\x2e\x6a\x1f\x1d\x14\x5b\xdc\xc1\xf8\xa2\x37\x9b\x81\x9f\x8d\x1d\x7e\x0c\x91\xc5\xeb\x8e\x29\xf5\x77\x56\x89\x2c\xd4\x1f\x2f\x7f\xcc\x12\xfd\x0e\x8d\xf0\x17\x5f\x34\x5f\x92\x55\xb2\x50\xcf\xe1\x01\x2e\xbd\x6c\xc1\x73\x84\x3a\x2e\x2e\x87\xe5\x6a\xec\x8b\x0f\x41\x8d\x17\xba\xc7\x5d\x8e\x8a\x2a\xed\xe7\x8f\x7e\x9c\x45\x26\x86\xf1\x3d\x11\x76\xa8\x9e\x1f\x2a\x5b\x31\x27\x57\xfe\x2f\x77\x6d\x3f\xca\x31\x1f\x15\x38'
乘法同态后: 646359222854425337163349523168782994791743938058598343354501119071038061276393600266008223512280597404068614528649009801204221663650258668152672707542156268909105150299332222332977882715901427076808889721338039397786567839073285666323613862167243991372595284479601623629675046248461058447161354305027812240726790951877009947787404228825707570921086861635446873347044267461459772934498286987874984811635551615067834015672633230136914130688640359691481147066254533197858544981381211862338387220385600797717495383686206654143918740576921645732188177543788332802046732007316178073366135692289938389987928495825631015954939958390184
解密后: b'Hello WorldGoodbye World'
可以看到,乘法同态后的密文通过私钥解密后得到的明文是两个明文的拼接,证明了RSA乘法同态的正确性
原文地址: https://www.cveoy.top/t/topic/f2t9 著作权归作者所有。请勿转载和采集!