当前位置: 首页 > news >正文

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

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}')

相关文章:

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

1.基本概念 Paillier同态加密是一种公钥加密方案,具有同态加密的特性。它由Pascal Paillier于1999年提出。 Paillier同态加密基于数论问题,其安全性基于大整数分解问题和离散对数问题的困难性。该方案可以用于保护隐私数据,同时支持在加密状态…...

代码随想录打卡第五十五天|● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 **题目:**给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0…...

C# 创建Oceanbase ODBC数据源 DSN

需要管理员权限打开VS,因为只有管理员权限可以修改注册表 using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Diagnostics; using System.Drawing;…...

C++ 常用函数汇总#include<algorithm>(3万字总结)

文章目录 1. 排序(Sorting)1.1 sort(first, last):对指定范围内的元素进行升序排序1.2 stable_sort(first, last):在保持相等元素的相对顺序的情况下对指定范围内的元素进行排序1.3 partial_sort(first, middle, last):对范围内的元素进行部分排序,使得前部分是最小的,但…...

Google Archive Patch 基础应用代码记录

项目地址 Google Archive Patch 前置 <!-- 差量应用模块 --> <dependency><groupId>com.google.archivepatcher</groupId><artifactId>archive-patch-applier</artifactId><version>1.0.4</version><scope>test</…...

机器学习——代价敏感错误率与代价曲线

文章目录 代价敏感错误率实现代价曲线例子 代价敏感错误率 指在分类问题中&#xff0c;不同类别的错误分类所造成的代价不同。在某些应用场景下&#xff0c;不同类别的错误分类可能会产生不同的代价。例如&#xff0c;在医学诊断中&#xff0c;将疾病患者错误地分类为健康人可…...

如何利用 ChatGPT 提升编程技能

目录 前言代码命名与 ChatGPT设计模式与 ChatGPT代码重构与 ChatGPT代码优化与 ChatGPTChatGPT 的潜在挑战与限制成功案例分析最佳实践与注意事项结语 前言 编程是一项充满创造性和挑战的任务&#xff0c;但也是一个需要花费大量时间和精力的领域。在日益复杂的软件开发环境中…...

ChatGPT:@EqualsAndHashCode(callSuper = false)是什么意思

ChatGPT&#xff1a;EqualsAndHashCode(callSuper false)是什么意思 EqualsAndHashCode(callSuper false)是什么意思&#xff1f; ChatGPT&#xff1a; EqualsAndHashCode(callSuper false) 是 Java 中的 Lombok 注解&#xff0c;用于自动生成 equals() 和 hashCode() 方法…...

docker部署的mariadb忘记密码

docker 里的 mariadb 数据库密码忘了&#xff0c;如果以前我会选择直接干掉重装&#xff0c;但是数据怎么办&#xff1f; 1 数据量小 就跳过密码登录进去备份出来 2 想办法改掉密码 我直接选择后者&#xff0c;跳过密码&#xff0c;mariadb10.4以后不能直接改密码了&#xff…...

一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)

本文主要讲述了一体化模型进行去噪、去雨、去模糊&#xff0c;也就是说&#xff0c;一个模型就可以完成上述三个任务。实现了良好的图像复原功能&#xff01; 先来看一下美女复原.jpg 具体的&#xff1a; 在图像恢复任务中&#xff0c;需要在恢复图像的过程中保持空间细节…...

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义&#xff0c;只需要满足&#xff1a;1、根节点两个子树的高度差不超过1&#xff1b;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…...

吉他、班卓琴和贝斯吉他降分器:Arobas Music Guitar 8.1.1

Arobas Music Guitar 是一款专业的吉他、班卓琴和贝斯吉他降分器。在熟练的手中&#xff0c;它不仅可以让您创作&#xff0c;还可以编辑、聆听和录制&#xff0c;以及导入和导出乐谱。如果有人感兴趣的话&#xff0c;录音是在八个轨道上进行的&#xff0c;你可以为每个轨道单独…...

cocos tilemap的setTileGIDAt方法不实时更新

需要取消勾选 Enable Culling。同时代码添加&#xff1a;markForUpdateRenderData函数。 floor.setTileGIDAt(102427,newP.x,newP.y,0); //中心 floor.markForUpdateRenderData(); 具体问题参考官网说明&#xff1a; Cocos Creator 3.2 手册 - 项目设置...

机器学习---使用 TensorFlow 构建神经网络模型预测波士顿房价和鸢尾花数据集分类

1. 预测波士顿房价 1.1 导包 from __future__ import absolute_import from __future__ import division from __future__ import print_functionimport itertoolsimport pandas as pd import tensorflow as tftf.logging.set_verbosity(tf.logging.INFO) 最后一行设置了Ten…...

铁合金电炉功率因数补偿装置设计

摘要 由于国内人民生活水平的提高&#xff0c;科技不断地进步&#xff0c;控制不断地完善&#xff0c;从而促使功率因数补偿装置在电力等系统领域占据主导权&#xff0c;也使得功率因数补偿控制系统被广泛应用。在铁合金电炉系统设计领域中&#xff0c;功率因数补偿控制成为目前…...

表格识别软件:科技革新引领行业先锋,颠覆性发展前景广阔

表格识别软件的兴起背景可以追溯到数字化和自动化处理的需求不断增加的时期。传统上&#xff0c;手动处理纸质表格是一项费时费力的工作&#xff0c;容易出现错误&#xff0c;效率低下。因此&#xff0c;开发出能够自动识别和提取表格数据的软件工具变得非常重要。 随着计算机…...

【Redis】高并发分布式结构服务器

文章目录 服务端高并发分布式结构名词基本概念评价指标1.单机架构缺点 2.应用数据分离架构应用服务集群架构读写分离/主从分离架构引入缓存-冷热分离架构分库分表&#xff08;垂直分库&#xff09;业务拆分⸺微服务 总结 服务端高并发分布式结构 名词基本概念 应⽤&#xff0…...

微信小程序拍照页面自定义demo

api文档 <template><div><imagemode"widthFix"style"width: 100%; height: 300px":src"imageSrc"v-if"imageSrc"></image><camerav-else:device-position"devicePosition":flash"flash&qu…...

单目标应用:进化场优化算法(Evolutionary Field Optimization,EFO)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、进化场优化算法EFO 进化场优化算法&#xff08;Evolutionary Field Optimization&#xff0c;EFO&#xff09;由Baris Baykant Alagoz等人于2022年提出&…...

推荐算法面试

当然可以&#xff0c;请看下面的解释和回答&#xff1a; 一面&#xff08;7.5&#xff09; 问题&#xff1a;推荐的岗位和其他算法岗&#xff08;CV&#xff0c;NLP&#xff09;有啥区别&#xff1f; 解释&#xff1a; 面试官可能想了解你对不同算法岗位的理解&#xff0c;包…...

终极指南:如何使用Chrome插件markdownReader提升Markdown阅读体验

终极指南&#xff1a;如何使用Chrome插件markdownReader提升Markdown阅读体验 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 还在为浏览器…...

别再硬编码数据了!用QAbstractTableModel+QTableView打造你的第一个Qt桌面表格应用(附完整源码)

从零构建Qt桌面表格应用&#xff1a;实战学生信息管理系统 在桌面应用开发领域&#xff0c;数据展示与交互一直是核心需求。无论是企业内部的员工管理系统&#xff0c;还是学校里的成绩统计工具&#xff0c;一个高效、美观的表格界面往往能极大提升工作效率。对于C开发者而言&a…...

关于python

1.python的主要运用Python的主要应用领域Python作为一种通用编程语言&#xff0c;因其简洁、易读和强大的生态系统&#xff0c;被广泛应用于多个领域。以下是Python的主要应用场景&#xff1a;数据科学与机器学习Python在数据分析和机器学习领域占据主导地位。库如NumPy、Panda…...

LaTeX公式一键转Word:告别繁琐复制,提升学术写作效率

LaTeX公式一键转Word&#xff1a;告别繁琐复制&#xff0c;提升学术写作效率 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为将网页上的数…...

Void编辑器:轻量级插件化架构与LSP/Tree-sitter深度集成解析

1. 项目概述&#xff1a;一个为“创造者”而生的现代编辑器最近在开发者社区里&#xff0c;一个名为“Void”的编辑器项目引起了我的注意。它不像那些我们耳熟能详的庞然大物&#xff0c;比如 VS Code 或 Sublime Text&#xff0c;一上来就带着庞大的生态和复杂的功能。Void 给…...

独立开发者如何用AI验证创业点子:15分钟完成市场分析与风险评估

1. 项目概述&#xff1a;一个为独立开发者打造的AI创业点子验证伙伴如果你和我一样&#xff0c;是个喜欢自己动手鼓捣点东西的独立开发者&#xff0c;那你肯定也经历过这个阶段&#xff1a;脑子里冒出一个自认为绝妙的点子&#xff0c;兴奋地花上几周甚至几个月把它做出来&…...

前端自定义光标系统:从原理到工程实践

1. 项目概述&#xff1a;一个可深度定制的网页光标系统最近在做一个前端项目时&#xff0c;遇到了一个挺有意思的需求&#xff1a;用户希望网页上的光标不仅仅是默认的箭头或小手&#xff0c;而是能根据不同的交互状态、页面区域甚至用户偏好&#xff0c;动态切换成各种自定义的…...

抖音内容高效采集实战:5个提升工作效率的开源方案

抖音内容高效采集实战&#xff1a;5个提升工作效率的开源方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

数据流网络中的能耗与吞吐量优化策略

1. 数据流网络中的能量与吞吐量权衡&#xff1a;原理与挑战在现代信号处理系统中&#xff0c;数据流网络&#xff08;Dataflow Graph, DFG&#xff09;已成为建模并行计算任务的核心框架。这种计算模型将应用程序分解为多个计算节点&#xff08;称为actors&#xff09;和通信通…...

AI代理规则引擎:构建安全可控的智能体管控系统

1. 项目概述&#xff1a;当AI代理需要“交通规则”最近在折腾AI代理&#xff08;Agent&#xff09;的开发&#xff0c;发现一个挺有意思但又普遍头疼的问题&#xff1a;你给一个代理下达指令&#xff0c;比如“帮我分析一下这个季度的销售数据”&#xff0c;理论上它应该能调用…...