隐私计算python实现Paillier同态加密

news2024/12/24 2:22:11

1.基本概念

        Paillier同态加密是一种公钥加密方案,具有同态加密的特性。它由Pascal Paillier于1999年提出。

        Paillier同态加密基于数论问题,其安全性基于大整数分解问题和离散对数问题的困难性。该方案可以用于保护隐私数据,同时支持在加密状态下对加密的数据进行运算。

        Paillier同态加密方案包含两个主要算法:加密算法和解密算法。其中,加密算法用于将明文加密为密文,解密算法用于将密文解密为明文。此外,该方案还包括一个密钥生成算法,用于生成加密和解密所需的公钥和私钥。

2.加解密过程

2.1密钥生成

1.随机选择两个长度相等的大素数p,q,并满足gcd(pq,(p-1)(q-1))=1,这里gcd表示最大公约数。

2.计算n=pq以及λ=lcm(p-1,q-1),这里lcm表示最小公倍数

3.随机选择整数g(也可以令g=n+1)

4.定义L函数:L(x)=(x-1)/n,计算 \mu=(L(g^{\lambda}mod n^2))^{-1}mod n

公钥pk=(n,g),私钥sk=(λ,μ)

2.2加密

1.输入明文信息m

2.选择随机整数r,且gcd(r,n)=1

3.计算密文c=g^mr^nmodn^2

2.3解密

1.输入密文c

2.计算明文m=L(c^\lambda~mod~n^2)\cdot\mu~mod~n

2.4同态加证明

\begin{array}{l}{​{E(m_{1})\times E(m_{2})}}{​{=\left(g^{m_{1}}r_{1}{}^{N}(m o d N^{2})\right)\times\left(g^{m_{2}}r_{2}{}^{N}(m o d N^{2})\right)}}{​{=g^{m_{1}+m_{2}}(r_{1}\times r_{2})^{N}(m o d N^{2})}}{​{=E(m_{1}+m_{2})}}\end{array}

3.加解密示例

3.1密钥生成

1.这里我们p、q选取简单的素数,即p=17,q=23

2.计算n=pq=391,λ=lcm(16,22)=176

3.取整数g=n+1=392

4.计算\mu=(L(392^{176}~mod~ 391^2))^{-1}~mod~391=20

公钥pk=(n,g)=(391,392),私钥sk=(176,20)

3.2加密

1.明文m=8

2.选择随机数r=5,gcd(5,391)=1

3.计算密文c=392^85^{391}~mod~391^2=15310

3.3解密

1.输入密文15310

2.计算明文m=L(15310^{176}~mod~391^2)\cdot20~mod~391=8

4.代码实现

"""
@Time : 2023/10/8 0008 16:17
@Auth : yeqc
"""
# 部分同态加密: paillier同态加密

from phe import paillier

# 创建Paillier 密钥对
public_key, private_key = paillier.generate_paillier_keypair()

# # 明文
# M = 42
# # 加密明文
# encrypted_M = public_key.encrypt(M)
#
# # 解密密文
# decrypted_M = private_key.decrypt(encrypted_M)
#
# print(f'明文{M}')
# print(f'加密密文:{encrypted_M.ciphertext()}')#.ciphertext()实现纯文本输出
# print(f'解密密文:{decrypted_M}')

# ------------------以下是密文加 实现明文加-------------------
# 明文
M1, M2 = 25, 70
# 加密密文
encrypted_M1, encrypted_M2 = public_key.encrypt(M1), public_key.encrypt(M2)

# 密文相加
en_M_sum = encrypted_M1 + encrypted_M2
# 解密密文
de_M_sum = private_key.decrypt(en_M_sum)
print(f'M1 = {M1},M2 = {M2}')
print(f'M1加密密文 en_M1 = {encrypted_M1}, M2加密密文 en_M2 = {encrypted_M2}')
print(f'密文相加 en_M_sum = {en_M_sum}')
print(f'解密密文 de_M_sum = {de_M_sum}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1138646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在类库中使用ASP.NET Core API

解决办法1 官方文档 解决办法2 将类库修改为web项目&#xff0c;然后设置输出为类库形式即可 <Project Sdk"Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><OutputType>Library</O…

剑指JUC原理-3.线程常用方法及状态

常用方法 start和run 调用run public static void main(String[] args) {Thread t1 new Thread("t1") {Overridepublic void run() {log.debug(Thread.currentThread().getName());FileReader.read(Constants.MP4_FULL_PATH);}};t1.run();log.debug("do othe…

[已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase

问题; 安装了gpu版本的pytorch&#xff0c;但是显示的torch.cuda.is_available(&#xff09;却是flase。 conda list查看 版本显示只有cpuonly 在网上找了半天&#xff0c;也没有解决办法。 仔细看了一下&#xff0c;发现&#xff0c;有个单独的包叫cpuonly&#xff0c;不知道…

【工具问题】IDEA每次关闭的时候都会弹框显示closing project,然后弹框持续很久就像卡住了

idea关闭的时候出现问题 问题展示为什么会出现这种情况怎么解决 问题展示 我idea已经关闭了&#xff0c;但是这个弹框要持续很久才能关闭 为什么会出现这种情况 我的plugins原本是加载不出来的&#xff0c;所以我按照网上说法去做 怎么解决 file->setting,再如图选择…

C语言KR圣经笔记 2.4声明 2.5算术操作符 2.6关系和逻辑操作符

2.4 声明 所有变量在使用前必须声明&#xff0c;尽管某些特定的声明可以由上下文隐式地做出。声明指定了类型&#xff0c;并包含一个或多个该类型的变量列表&#xff0c;如 int lower, upper, step; char c, line[1000]; 多个变量能以任何方式分布在多个声明之中&#xff1b…

SpringBoot整合MyBatis-Plus详解(一)

文章目录 SpringBoot整合MyBatis-Plus详解&#xff08;一&#xff09;MyBatis-Plus简介入门案例开发环境准备环境准备创建数据库和表Pom.xml 编写代码application.properties启动类User实体类创建UserMapper接口入门测试案例添加日志功能&#xff08;在application.properties后…

DVWA-Cross Site Request Forgery (CSRF)

大部分网站都会要求用户登录后,使用相应的权限在网页中进行操作,比如发邮件、购物或者转账等都是基于特定用户权限的操作。浏览器会短期或长期地记住用户的登录信息,但是,如果这个登录信息被恶意利用呢?就有可能发生CSRF CSRF的英文全称为Cross Site Request Forgery,中文…

openEuler 22.03 x86架构下docker运行arm等架构的容器——筑梦之路

为什么要这样做&#xff1f; 随着国产化的普及&#xff0c;国家政策对信创产业的支持&#xff0c;尤其一些金融证券行业、政府单位等&#xff0c;逐渐开始走国产化信创的路线&#xff0c;越来越多接触到国产 CPU &#xff08;arm 平台&#xff0c;比如华为的鲲鹏处理器&#xf…

TSINGSEE青犀基于AI视频识别技术的平安校园安防视频监控方案

一、背景需求 因学校频频出治安事件&#xff0c;所以必须要加强学校的安防工作&#xff0c;目前来看&#xff0c;大部分校园都建设了视频监控来预防保障校园安全。但是传统的视频监控系统&#xff0c;主要通过设备来录像以及人员时时监控来进行。这种监管方式效率十分低下&…

elementui时间日期组件右边自定义图标

效果 改为 首先是将左边的清除图标关闭 然后是将右边的图标设置为display&#xff1a;none,设置宽度&#xff0c;左右内边距 最后是 mounted() {/*思路&#xff1a;通过document文档&#xff0c;选中日期时间选择器元素&#xff0c;然后创建一个i标签&#xff0c;并指定其类…

分布式日志和链路追踪

分布式日志 实现思路 分布式日志框架服务的实现思路基本是一致的&#xff0c;如下&#xff1a; 日志收集器&#xff1a;微服务中引入日志客户端&#xff0c;将记录的日志发送到日志服务端的收集器&#xff0c;然后以某种方式存储数据存储&#xff1a;一般使用ElasticSearch分…

简化路径(C++解法)

题目 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 / 开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表示当前目录本身&#xff1…

【高阶数据结构】并查集和图

目录 1.数据结构--并查集 2.数据结构--图 1.图的基础概念 2.图的简单实现 2.1.邻接矩阵的图实现 2.2.邻接表的图实现 2.3.图的DFS和BFS 2.4.最小生成树 2.4.1.Kruskal(克鲁斯卡尔算法) 2.4.2.Prim&#xff08;普里姆算法&#xff09; 2.5.最短路径 2.5.1.Dijkstra(…

非遗主题网站的设计与实现基于PHP实现

包括源码参考论文 下载地址: https://juzhendongli.store/commodity/details/18

k8s-----26、细粒度权限管理 RBAC

0、导读 每一个用户对API资源进行操作都需要通经过以下三个步骤: 第一步:对客户端访问进行认证操作,确认是否具有访问k8s权限(也就是通过serviceaccount) token(共享秘钥) SSL(双向SSL认证) …通过任何一个认证即表示认证通过,进入下一步第二步:授权检查,确认是否对资源…

openpnp - SlotSchultzFeeder source code bugfix

文章目录 openpnp - SlotSchultzFeeder source code bugfix概述笔记openpnp源码调试环境排查思路开git分支查到的问题 - 1查到的问题 - 2查到的问题 - 3针对以上问题进行的逻辑修正D:\my_openpnp\openpnp_github\src\main\java\org\openpnp\machine\reference\driver\wizards\G…

Redis快速上手篇(六)主从复制

主从复制 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 读写分离&#xff0c;性能扩展&#xff08;主 写 从 读&#xff09; 容灾快速恢复 一主二仆 拷贝多个redis.conf文件include(写绝…

动态规划太难了?是你没有找对方法,四题带你搞懂动态规划!

&#x1f4af; 博客内容&#xff1a;动态规划刷题 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是CS…

【RV1106/RV1103】RV1103增加RTL8723BS

文章目录 Kernel 部分支持配置 menuconfigWiFi 功能支持Bluetooth 功能支持 原SDK的Busybox配置BT 部分文件系统部分蓝牙测试dbus 安装测试遇到的问题让hci0出来 使用hcitool来操作 Kernel 部分支持 配置 menuconfig WiFi 功能支持 Bluetooth 功能支持 正基和海华的模块都使用…

pip 更换源

方案1 在C盘用户名录下新建pip文件夹&#xff0c;里面包含pip.ini文件 方案2 在C盘用户名目录的AppData的Roaming下新建pip文件夹&#xff0c;里面包含pip.ini文件。 内容为 [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple