当前位置: 首页 > 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;包…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...