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验证乘法同态:

#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

发布了37 篇原创文章 · 获赞 23 · 访问量 19万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览