网上对这个 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 同态加密(密文传输)相关推荐

  1. 同态加密:CKKS方案详解及一个python实现:TenSEAL

    部分资料来自于HEAAN作者的个人主页:https://yongsoosong.github.io/files/slides/intro_to_CKKS.pdf 0x00 引流 本文是CKKS方案的简 ...

  2. 加密数据库与密文检索、同态加密

    内容主要来自山东大学软件学院孔凡玉教授的<大数据安全>课程,整理仅以期末考试的范围为准则,因此存在较大的内容缺失,后续考虑补全. 密文检索的概念 云存储环境中,用户将数据加密后上传至云服务 ...

  3. 全同态加密知识体系整理

    文章由AdijeShen整理,供个人学习使用. 整理了到2022年为止,同态加密比较重要的知识和方法. 文章目录 引 基础知识 基于RLWE的同态加密方案(BGV,BFV,CKKS) 通用的格式 效率 ...

  4. 同态加密实现数据隐私计算,能让你的小秘密更加秘密

    摘要:同态加密作为实现数据隐私计算的关键技术,在云计算.区块链.隐私计算等领域均存在着广泛的应用需求和一些可行的应用方案. 本文分享自华为云社区<同态加密在联邦计算中的应用>,作者:生也有 ...

  5. OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. 隐私计算:数据脱敏、匿名化、假名化、差分隐私和同态加密

    ​​​​​随着数据挖掘技术的普遍应用,一些厂商通过发布用户数据集的方式鼓励研究人员进一步深入挖掘数据的内在价值,在数据集发布的过程中,就存在安全隐患,可能导致用户隐私的泄露.2016年欧盟通过< ...

  7. 隐私计算之全同态加密

    [引]走近任何一个领域,都会发现自己的渺小和微不足道,会越发地敬畏技术和未知,隐私计算也不例外.读了一点儿文章和paper,觉得还是ACM 上的这篇综述(https://queue.acm.org/d ...

  8. 什么是同态加密?为什么它不是主流加密算法?

    同态加密算法是一种加密算法,设计用于对加密数据进行数学式运算.在许多应用程序中,这是一个非常有用的特性. 同态加密的介绍 数据可以处与这三种状态之一:静止状态.传输中状态和使用中状态.大多数加密处理前 ...

  9. 基于同态加密体制的安全多方计算

    本文首发公众号VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等.有兴趣的小伙伴们, ...

最新文章

  1. OpenCV 4.5.3 发布!优化DNN等多个模块~
  2. 成功解决type object ‘h5py.h5.H5PYConfig‘ has no attribute ‘__reduce_cython__‘
  3. python中数字是常量吗,【python】常量与变量
  4. WindowsPhone7开发简单豆瓣网应用程序之界面设计
  5. 如果Java快死了,那么它肯定看起来非常健康
  6. 订阅号 笔记记录开发 php,微信订阅号开发笔记(五)
  7. c语言getchar_二级C语言试题刷题录
  8. ECharts.js学习(二)动态数据绑定
  9. 机器学习论文泛读总结
  10. endnotex8与9的区别_下载安装EndnoteX8或EndnoteX9,建立数据库并以自己的名字命名。...
  11. ACM 国际大学生程序设计竞赛简介
  12. 通达信指标公式常用绘图函数(2)——DRAWLINE、DRAWKLINE、STICKLINE
  13. rdkitnlp | smiles数据扩增与smiles标准化
  14. android自定义View之(四)------一键清除动画
  15. 下面代码的输出结果是什么?
  16. Dubbo-06 20190320
  17. 【Paper】毕业论文免费查重网站平台汇总
  18. linux su无效_Linux下su命令无反应的解决办法
  19. Java数组(Array)
  20. 行业研究-全球与中国移动现场服务解决方案市场现状及未来发展趋势

热门文章

  1. python解压函数:extractall
  2. 文件操作opendir()/readdir()/closedir()/stat()
  3. 什么是net驻场开发
  4. iOS - 手动下架的应用后快速恢复上架
  5. SQLyog 自动完成
  6. Virgin Voyages将提供按需香槟配送服务“Shake for Champagne™”
  7. Arduino基础入门篇14—跳动的数码管
  8. 疫情致美国10万家餐厅倒闭或长期关闭;温德姆酒店集团上半年大中华区签署38个项目 | 美通企业日报...
  9. HTML input 标签 date 类型 设置默认值
  10. 自学MATLAB(四):特征值与特征向量