TenSEAL 同态加密(密文传输)
网上对这个 TenSEAL 的介绍很多,但我居然没找到一个比较有用的密文传输的方法,最后没办法只能去官网看英文教程,现在整理出来给有需要的小伙伴(当然,最好还是去看官网的教程,虽然是英文,但全面一点)。
官网链接:
GitHub - OpenMined/TenSEAL: A library for doing homomorphic encryption operations on tensors
Context 序列化和反序列化
import tenseal as ts# Context 生成与分发(密钥都在 Context 里面)
# 分发过程需要序列化操作
class TensealKeyManage:def __init__(self):self.ckks_context = ts.context(ts.SCHEME_TYPE.CKKS, 8192, coeff_mod_bit_sizes=[22, 21, 21, 21, 21, 21, 21, 21, 21, 21])self.ckks_context.global_scale = pow(2, 21)self.ckks_context.generate_galois_keys()self.ckks_context.generate_relin_keys()self.bfv_context = ts.context(ts.SCHEME_TYPE.BFV, 4096, plain_modulus=1032193)# 分发 CKKS 公钥def get_ckks_publicKey(self) -> bytes:return self.ckks_context.serialize(save_public_key=True,save_secret_key=False,save_relin_keys=True,save_galois_keys=True)# 分发 CKKS 所有密钥def get_ckks_secretKey(self) -> bytes:return self.ckks_context.serialize(save_public_key=True,save_secret_key=True,save_relin_keys=True,save_galois_keys=True)# 分发 BFV 公钥def get_bfv_publicKey(self) -> bytes:return self.bfv_context.serialize(save_public_key=True,save_secret_key=False,save_relin_keys=True,save_galois_keys=True)# 分发 BFV 所有密钥def get_bfv_secretKey(self) -> bytes:return self.bfv_context.serialize(save_public_key=True,save_secret_key=True,save_relin_keys=True,save_galois_keys=True)if __name__ == '__main__':# 密钥管理器keyManage = TensealKeyManage()# 获取公钥 Context 并反序列化ckks_context_public = ts.context_from(keyManage.get_ckks_publicKey())bfv_context_public = ts.context_from(keyManage.get_bfv_publicKey())
CipherText 序列化和反序列化
import tenseal as ts
import numpy as npclass TensealCryptor:def __init__(self, ckks_context_ser):# CKKS 加密设置self.ckks_context = ts.context_from(ckks_context_ser)# 加密并序列化def CkksEncrypt(self, np_vector) -> bytes:return ts.ckks_tensor(self.ckks_context, np_vector).serialize()# 反序列化并解密def CkksDecrypt(self, enc_ser: bytes):ckks_enc = ts.ckks_tensor_from(self.ckks_context, enc_ser)return np.array(ckks_enc.decrypt().tolist())if __name__ == '__main__':keyManage = TensealKeyManage()cryptor = TensealCryptor(keyManage.get_ckks_secretKey())b = np.array([0, 0, 0])enc_b_ser = cryptor.CkksEncrypt(b)print(enc_b_ser)print(cryptor.CkksDecrypt(enc_b_ser))
TenSEAL 同态加密(密文传输)相关推荐
- 同态加密:CKKS方案详解及一个python实现:TenSEAL
部分资料来自于HEAAN作者的个人主页:https://yongsoosong.github.io/files/slides/intro_to_CKKS.pdf 0x00 引流 本文是CKKS方案的简 ...
- 加密数据库与密文检索、同态加密
内容主要来自山东大学软件学院孔凡玉教授的<大数据安全>课程,整理仅以期末考试的范围为准则,因此存在较大的内容缺失,后续考虑补全. 密文检索的概念 云存储环境中,用户将数据加密后上传至云服务 ...
- 全同态加密知识体系整理
文章由AdijeShen整理,供个人学习使用. 整理了到2022年为止,同态加密比较重要的知识和方法. 文章目录 引 基础知识 基于RLWE的同态加密方案(BGV,BFV,CKKS) 通用的格式 效率 ...
- 同态加密实现数据隐私计算,能让你的小秘密更加秘密
摘要:同态加密作为实现数据隐私计算的关键技术,在云计算.区块链.隐私计算等领域均存在着广泛的应用需求和一些可行的应用方案. 本文分享自华为云社区<同态加密在联邦计算中的应用>,作者:生也有 ...
- OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 隐私计算:数据脱敏、匿名化、假名化、差分隐私和同态加密
随着数据挖掘技术的普遍应用,一些厂商通过发布用户数据集的方式鼓励研究人员进一步深入挖掘数据的内在价值,在数据集发布的过程中,就存在安全隐患,可能导致用户隐私的泄露.2016年欧盟通过< ...
- 隐私计算之全同态加密
[引]走近任何一个领域,都会发现自己的渺小和微不足道,会越发地敬畏技术和未知,隐私计算也不例外.读了一点儿文章和paper,觉得还是ACM 上的这篇综述(https://queue.acm.org/d ...
- 什么是同态加密?为什么它不是主流加密算法?
同态加密算法是一种加密算法,设计用于对加密数据进行数学式运算.在许多应用程序中,这是一个非常有用的特性. 同态加密的介绍 数据可以处与这三种状态之一:静止状态.传输中状态和使用中状态.大多数加密处理前 ...
- 基于同态加密体制的安全多方计算
本文首发公众号VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等.有兴趣的小伙伴们, ...
最新文章
- aspx页面与ascx控件脚本冲突的问题
- PopupWindow 使用详解(二) Popwindow 制作常见花哨效果
- python中node.tag的用法_python在ui自动化中的一些常见用法
- 自动驾驶_AGV小车的工作原理及其导航方式简介
- python如何检验显著性差异_基于python的显著性检验
- 使用Docker部署MySQL
- 套件端口 群晖_群晖套件重装过程中提示端口被占用的解决方案
- Java基础之序列化
- 十大最佳外国Android游戏下载平台
- 给hotmail邮箱发信(status=deferred)解决办法
- Visual Prompt Tuning (VPT)
- 【今日CV 计算机视觉论文速览 第99期】Fri, 12 Apr 2019
- mediastreamer使用教程
- vue3.x 中使用 vant <van-image>图片不显示的问题
- PM必备:简单、好用、免费的项目管理软件推荐
- Java仿腾讯视频流媒体点播网站开发实战
- python数据分析知识体系_数据分析知识体系
- adjusted closing price股票的调整后价格
- Java技术详细介绍
- 在iphone、ipad上安装一些常用命令行命令及实时抓取移动设备上的通信包(ADVsock2pipe+Wireshark+nc+tcpdump)
热门文章
- 信息系统项目管理师(杂)
- 【医学影像系列:二】眼底图像数据集整理(糖尿病视网膜病变/青光眼...)
- 微信分享打不开分享界面
- 让ADSL宽带路由器更安全
- java使用POI导出word数据以及生成word表格
- python tkinter实现的文件夹下的excel表格汇总
- 多源数据融合 Sar Optical(一)像素级融合
- 下沉市场“四大天王”受关注 水滴筹成健康保障领域独角兽
- 一成电计算机考研国家线2O 9,【九〇六 | 打卡】考研“国家线”只是起点,我们要挑战骇浪惊涛!...
- Windows11 WSL2 ubuntu中vscode调试代码