RSA乘法同态加密的python实现

简单的同态加密包含加法同态和乘法同态:

       加法同态算法最经典的是Paillier算法

       乘法同态算法最经典的是RSA算法:

              a * b = c(基础等式)

               加密函数e() 解密函数d() [enctrypt:加密;decrypt:解密]

             e(a) * e(b) = e(c) (乘法同态特性)

            c = d(e(c)) = d(e(a) * e(b))

           验证c 是否等于a*b,即可得到乘法同态的正确性

此处演示RSA算法验证乘法同态加密

环境:python3.7 pycharm

引入rsa并简单测试:

#coding:utf-8
__author__ = 'love_paeonia'
import rsa
(public_key, private_key) = rsa.newkeys(512)
emessage = 'Hello world!'.encode('utf-8')
crypto = rsa.encrypt(emessage, public_key)
print(crypto)
dmessage = rsa.decrypt(crypto, private_key)
print(dmessage.decode('utf8'))

云加密

pipy->rsa库:

RSA乘法同态加密的python实现_第1张图片

RSA验证乘法同态:

#coding:utf-8
__author__ = 'love_paeonia'
import rsa
import rsa.core
(public_key, private_key) = rsa.newkeys(512)
encrypto1 = rsa.core.encrypt_int(15, public_key.e, public_key.n)
print(encrypto1)
encrypto2 = rsa.core.encrypt_int(11, public_key.e, public_key.n)
print(encrypto2)
decrypto = rsa.core.decrypt_int(encrypto1*encrypto2, private_key.d, public_key.n)
print(decrypto)

结果:15 * 11 = 165

RSA乘法同态加密的python实现_第2张图片

你可能感兴趣的:(信息安全)