自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 创新实训(十二)项目总结

这学期的项目实训中我们组选择的课题是分布式异步联邦学习平台。联邦学习主要体现在不同用户之前的数据集不共享,通过共享模型参数参与聚合间接达到同数据集共享达到的相近效果;分布式是将训练和聚合分别放在不同机器上运行,充分利用硬件资源加速整个训练过程;同时这里的异步训练是完全的,不同用户的运算速度和参与时间是不同的,为了去解决这个问题,我们采取的方式是设置权重,根据参与用户进行的聚合轮次,为其分配不同的权重,以平衡用户上传的模型参数对全局模型参数的影响。我们平台的主要功能是给予用户发布和参与联邦学习任务的平台以及

2022-06-11 23:20:30 261 1

原创 创新实训(十一)开发过程中的一些bug汇总

这是对开发过程中一些比较有意义、难缠的bug的记录和总结。修改bug查阅的文档、博客至少上百篇,也算是血泪教训了。记录在此,一是证明自己的开发过程,二是总结汇总,避免重复的错误再犯。注意规则名字不要包含诸如“name”这种关键字,否则会报错2、input输入框图标不显示的问题参考下面这个,用插槽的方式解决 elementPlus使用icon图标不显示解决方法_小黑ya_的博客-CSDN博客_element icon无法显示Icon 图标 | Element Plus (gitee.io)或者直

2022-06-11 23:19:40 252

原创 创新实训(十)高级界面美化

前端的界面基本完成之后,我们需要继续开始界面的高级美化工作。

2022-06-07 00:15:23 448

原创 创新实训(九)Vuex的引入及编写

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。这里我在纠结是采用VUEX还是传统的session,查阅了一下资料:详见:https://www.jianshu.com/p/bc2d2429a693首先,理解vuex的作用每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下

2022-05-26 11:18:18 126

原创 创新实训(八)任务相关界面编写

本文主要介绍与任务相关的界面的编写,具体而言,分为展示任务列表、新建任务、个人任务等。此外,引入了echarts,以进行训练过程的可视化展示,也会在本文介绍其使用。这一部分可以认为是该系统最重要的一部分。从后端获取到数据之后,跳转到所有任务展示界面,这里其实比较常规,就是一个表格的实现和美化:创建任务用一个卡片包裹的表单form。表单当中包括了常见的数据选择形式:单选框,计数器,输入框,文件上传,按钮等等…echarts的使用折线图主要用来展示数据项随着时间推移的趋势或变化。ECharts

2022-05-26 11:16:56 96

原创 创新实训(七)侧边栏及前端路由编写

本周的前端工作主要是侧边栏的实现以及前端路由的编写。主要使用了elementplus自带的el-menu.官方文档:https://element-plus.gitee.io/zh-CN/component/menu.html#left-and-right垂直菜单,可内嵌子菜单。通过el-menu-item-group组件可以实现菜单进行分组,分组名可以通过title属性直接设定,也可以通过具名 slot 来设定。编写起来还是比较容易的,注意子菜单如何编写。代码如下:至于如何加图标,这里也是用

2022-05-26 11:13:35 140

原创 创新实训(六)登陆注册界面编写

登录注册界面是我认为最难写的界面之一。原因在于:1、它不是很规律,自由发挥的空间很大,同时想绘制出比较雅观的界面是比较困难的。需要用到大量的CSS。2、登录注册不止有界面,还有输入框规则的制定3、获取到数据,发送给后端的编写。首先展示一下最后的成果:我觉得还是比较美观的。可以看到就是左边插图右半边输入框的结构,比例协调。这个还是比较容易的,其实是两幅图,一副左下角的蓝色纯色图,另一幅是从插画网站找到的主题色接近的图。拼接好位置。这里要用到CSS。右侧输入框这个用了elementplus的输入框

2022-05-26 11:11:54 114

原创 创新实训(五)主页面组件编写

接下来进入了本周的前端开发工作,本周主要完成主页面的编写。主页面的预期效果是美观、简介,内容主要是以下几个:顶栏有问候语,根据时间自动变化;然后是基本信息,介绍了我们的项目信息;然后是一副满足美化效果的插画;然后是训练记录界面;最后是一个美观的走马灯,可以向客户展示图片信息等等。问候语根据计算得到的日期生成,然后是头像;这里用到了计算属性,用来计算日期:基本信息这里主要就是一个card卡片包裹着一个el-description界面,里面进行内容填充。描述页我抽成了一个组件,如下:插画

2022-05-14 22:30:57 90

原创 创新实训(四)前端框架大改以及顶栏的绘制

中期的界面总体来说还是比较简陋的,因此有必要下定决心大刀阔斧的改造一番,达到理想的前端展示效果,这样才能吸引用户。总体架构如图:src文件夹下,assets存放静态资源,components是组件,router是路由,styles是静态CSS资源,view是展示的组件,剩下的略。这里可以选用element plus自带的布局组件,但是我用了一下感觉还是不太灵活,决定还是自己写,然后结合CSS控制相对布局。总体就是分成顶端,侧边栏,主体区域这三部分。体现在layout.vue当中比较明显:头部的绘制

2022-05-08 22:37:24 433

原创 创新实训(三)初版界面绘制以及可视化的实现

基本上是采用了顶栏、侧边栏、内容区三个部分的经典设计。背景加了图片。可以看到主要分成以下几个部分:顶端是一个状态栏,分成初始化、训练模型、训练完成三个状态,再往下是三个按钮,单选框。然后就是一个表格,用来表示训练的轮次,以及相应的精确度展示,再往下是一个折线图。折线图使用的是第三方库echarts。官网的介绍:一个基于 JavaScript 的开源可视化图表库。官网:https://echarts.apache.org/handbook/zh/get-started/折线图样式的修改折线图中折线的

2022-04-24 17:02:54 63

原创 创新实训(二)前期准备

由于基本是从零开始,我花了三周左右的时间自学和基本掌握了前端的技巧,这里简要介绍一下我的前端学习历程:首先是HTML+CSS+JavaScript的前端基础三件套的学习,这里我推荐B站狂神说JAVA这个老师的系列课程。狂神说HTML+CSS学习笔记【狂神说Java】JavaScript学习笔记这两个笔记总结的比较全面。然后是VUE的学习。Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库

2022-04-17 22:22:28 108

原创 创新实训(一)开题

联邦机器学习(Federated machine learning/Federated Learning),又名联邦学习,联合学习,联盟学习。联邦机器学习是一个机器学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和机器学习建模。联邦学习作为分布式的机器学习范式,可以有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,能从技术上打破数据孤岛,实现AI协作。谷歌在2016年提出了针对手机终端的联邦学习,微众银行AI团队则从金融行业实践出发,关注跨机构跨组织的大数据

2022-04-14 22:43:45 194 1

原创 SEAL全同态加密开源库(十八) 总结

前言2021SC@SDUSC2021-12-28时光飞逝,今天是12月28日,也是软件工程实践这门课验收的时间。我们持续了一学期的SEAL全同态加密开源库-源码分析,也就到此为止了。该写一篇总结。成果总结通过小组合作的方式,完成了微软SEAL全同态加密开源库的编译安装、运行、源码分析、示例代码分析。我完成了编译安装说明2篇,源码分析15篇,理论知识补充1篇。编译安装说明方面,我对SEAL库的最新3.7版本成功编译安装运行,鉴于网上搜到的说明博客都是针对旧版本,这在全网应该还是对3.7新版本的首篇

2021-12-28 00:14:08 11310 1

原创 SEAL全同态加密开源库(十七)同态加密-理论知识整理补充

2021SC@SDUSC2021-12-27前言对SEAL库的源码分析基本也接近尾声了,我反复提到过,全同态加密除了对代码能力有要求外,对于理论知识的掌握程度也有很高的要求,因此在我的博客里也一直在穿插着理论知识的介绍、补充。本篇,我们从宏观的角度,整理补充一下全同态加密所需的理论知识。以期在后续的学习中能够不断温故而知新。群同构–第一同构定理这里理论知识的补充,参考了博客https://blog.csdn.net/qq_41545715?type=blog博主系统的整理总结了密码学设计的代数、

2021-12-28 00:00:38 9638 1

原创 SEAL全同态加密开源库(十六)performance-性能

2021SC@SDUSC2021-12-27前言本篇开始我将讨论SEAL中performance.cpp的代码实现,这一部分实现了对SEAL的性能测度。源码分析主要分析void bfv_performance_test(SEALContext context)。先是初始化以及打印一些参数。 chrono::high_resolution_clock::time_point time_start, time_end; print_parameters(context);

2021-12-27 21:48:45 6669

原创 SEAL全同态加密开源库(十五) rotation-源码浅析

2021SC@SDUSC2021-12-27前言本篇开始我将讨论SEAL中rotation.cpp的代码实现。简介BFV方案(使用BatchEncoder)和CKKS方案都支持对加密数字进行native计算。除了slot-wise计算外,还可以循环地旋转加密向量。代码分析void example_rotation_bfv()先是和前文类似的设置一些参数。 print_example_banner("Example: Rotation / Rotation in BFV");

2021-12-27 21:23:03 751

原创 SEAL全同态加密开源库(十四) encoders-源码浅析

2021SC@SDUSC2021-12-26前言前几篇我们讨论了SEAL对于BFV、CKKS的实现。本篇开始我将开始讨论SEAL中encoders.cpp代码实现。背景在“1 _bfv_basics。我们展示了如何使用BFV方案执行一个非常简单的计算。计算以明文模为参数,仅利用一个BFV明文多项式的系数。这种方法有两个值得注意的问题:(1)实际应用中一般采用整数或实数算法,而不是模运算;(2)我们只使用了明文多项式的一个系数。这是非常浪费的,因为明文多项式很大,而且在任何情况下都将全部加密。

2021-12-26 23:59:51 2491

原创 SEAL全同态加密开源库(十三) CKKS-源码浅析

2021SC@SDUSC2021-12-26前言这是SEAL全同态加密开源库分析报告的第13篇,我们继续上一篇的CKKS源码分析。代码分析现在x3_encryption与x1_encryption处于不同的级别,这阻止我们将它们相乘来计算x3。我们可以简单地将x1_encrypted切换到模数转换链中的下一个参数。然而,由于我们仍然需要将x3,乘以PI(plain_coeff3),所以我们先计算PI*x,然后将它与x2相乘,得到PI *x3。最后,我们计算PI *x 并将其从280缩放到接近2

2021-12-26 23:43:57 3423

原创 SEAL全同态加密开源库(十二) CKKS-源码浅析

2021SC@SDUSC2021-12-19前言前两篇我们讨论了SEAL对于BFV的实现。本篇开始我将开始讨论SEAL对于CKKS的实现。照例我会先补充理论知识,然后分析源码native/examples/_ckks_basis.cpp文件。当然注意,本文的目的并非深入探究CKKS原理,而是力求帮助开发者在完全不懂原理的情况下,快速构建CKKS工程,并掌握基本的使用技巧。CKKS简介CKKS算法是2017年论文《Homomorphic Encryption for Arithmetic of A

2021-12-19 23:59:23 3283 2

原创 SEAL全同态加密开源库(十一) BFV-源码浅析(2)

2021SC@SDUSC2021-12-12前言从本篇开始,接上一篇的BFV分析,这里我们继续分析BFV源码。争取本篇结束战斗。与之前的工作相比,这些代码显得更具整体性,也能更好体现出SEAL的工作原理以及流程,算是对前面的集大成者了,因此很有分析的必要。BFV-2本篇我们将继续分析examples/1_bfv_basics.cpp。看一看SEAL对于bfv是如何实现的。先看整体的运行效果:来自example.cpp,输入1即可得到BFV方案的运行示例。Microsoft SEAL ver

2021-12-12 23:49:31 7756 1

原创 SEAL全同态加密开源库(十) BFV-源码浅析

2021SC@SDUSC2021-12-5前言时光飞逝,前段时间我们一直在致力于分析SEAL库比较底层的核心代码,遵循的思路也是从底层往上层的应用层去挖掘,这样有利也有弊吧,好处自然就是深入了解底层实现机制,弊端就是缺少一个整体的把握。so,从本篇开始,我们开始试图暂时跳脱出native/src文件夹,主要是底层代码基于我们的分工也完成的差不多了,接下来的一个月也到了收获的时节,我将开始试图分析examples文件夹下的代码。与之前的工作相比,这些代码显得更具整体性,也能更好体现出SEAL的工作原

2021-12-05 23:57:26 8057

原创 SEAL全同态加密开源库(九) CKKS-源码浅析

SEAL全同态加密开源库(八) CKKS-源码浅析2021SC@SDUSC2021-11-28介绍这篇文章我将从CKKS的源码进行入手,进一步理解CKKS的内部加密解密以及简单的加减乘等操作。源码分析生成公钥在我之前的博客中,大体介绍了加密解密以及简单的加法,可以再去回顾一下,以便于了解。生成组成公钥的要素 “ a ”Element a(dug, elementParams, Format::EVALUATION);生成秘钥 “ s ”Element s;给秘钥s进行赋值不使用

2021-11-28 23:51:09 4835 2

原创 SEAL全同态加密开源库(八) rns源码解析(2)

SEAL全同态加密开源库(七) rns剩余数系统-源码解析2021SC@SDUSC2021-11-21前言这是SEAL开源库代码分析报告第七篇,本篇将继续分析util文件夹中的rns.h和rns.cpp,也即剩余数系统。理论知识补充推荐一篇很好的初学者入门博客,陈志罡教授写的:科学网—整数上全同态加密方案分析(1)–献给全同态加密的初学者 - 陈智罡的博文 (sciencenet.cn)本期的理论知识补充,我们介绍RNS,剩余数系统。剩余数表示系统(RNS,residue number sy

2021-11-21 23:40:20 558

原创 SEAL全同态加密开源库(七) rns剩余数系统-源码解析

SEAL全同态加密开源库(七) rns剩余数系统-源码解析2021SC@SDUSC2021-11-14前言这是SEAL开源库代码分析报告第六篇,本篇将首先照例引入一些理论知识,然后本篇将开始分析整数运算部分,numth.cpp的源代码。关于其重要性,在公钥和密钥的生成、明文加密以及密文解密过程中,都需要整数的运算。举个陈智罡教授博客中的例子,假设已知明文为m,通过加密算法得到m+2r+pq,想要对其解密就需要先通过模p运算把pq消去,模2运算把2r消去,最后剩下明文m。因此整数运算这一部分,有仔细

2021-11-14 23:46:54 5329 1

原创 SEAL全同态加密开源库(六) 整数运算numth源码解析

SEAL全同态加密开源库(五) 整数运算numth源码解析2021SC@SDUSC2021-11-07前言这是SEAL开源库代码分析报告第五篇,本篇将首先照例引入一些理论知识,然后本篇将开始分析整数运算部分,numth.cpp的源代码。关于其重要性,在公钥和密钥的生成、明文加密以及密文解密过程中,都需要整数的运算。举个陈智罡教授博客中的例子,假设已知明文为m,通过加密算法得到m+2r+pq,想要对其解密就需要先通过模p运算把pq消去,模2运算把2r消去,最后剩下明文m。因此整数运算这一部分,有仔细

2021-11-07 23:59:14 3368

原创 SEAL全同态加密开源库(五)-NTT代码分析

2021SC@SDUSC2021-10-31前言这是SEAL开源库代码分析报告第五篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。ntt.h源码分析首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函数:inline std::uint64_t

2021-10-31 23:18:24 983

原创 SEAL全同态加密开源库(四) NTT源码解析

SEAL全同态加密开源库(四) NTT源码解析2021SC@SDUSC2021-10-27前言这是SEAL开源库代码分析报告第四篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。ntt.h源码分析首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函

2021-10-24 23:54:10 1198 2

原创 SEAL全同态加密开源库(三) NTT代码分析

SEAL全同态加密开源库(三) NTT代码分析2021SC@SDUSC2021-10-17前言这是SEAL开源库代码分析报告第三篇,本篇将首先介绍一下编译运行的最终版的成果,借此对第一篇博客的部分编译内容加以修正。然后本篇将重点介绍SEAL库多项式乘法的重要基础算法:NTT。注意这里将涉及大量的理论基础,可能略显枯燥困难。编译步骤的修正在第一篇博客中,讲述了编译运行SEAL库的完整步骤,但是并未经过实战检验,经过检验,发现部分内容存在漏洞,在经过很久的尝试之后,终于对最新版的SEAL库(vers

2021-10-17 20:59:52 1909 2

原创 SEAL全同态加密开源库(二) 原理初探与源代码分析

@山东大学软件学院SEAL全同态加密开源库(二) 原理初探与源代码分析2021SC@SDUSC2021-10-10密码学原理初探由于全同态对理论知识的要求较高,因此,后续的每一篇博客的开头,我都会循序渐进的补充一些密码学原理,以及全同态加密的原理知识,以期温故而知新。本篇博客,我们开一个密码学的初探。写得比较浅显,入门尚可。密码学又分为密码编码学(Cryptography)和密码分析学(Cryptanalysis)。在密码学中,一个密码体制或密码系统是指由明文、密文、密钥、加密算法和解密算法

2021-10-10 23:53:14 2423 3

原创 SEAL全同态加密开源库(一) 安装与配置

SEAL全同态加密开源库(一) 安装与配置2021SC@SDUSC2021-09-30SEAL库介绍何为全同态加密全同态加密属于密码学领域,被称为“密码学的圣杯”。如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说f(A) = A’ ,f(B) = B’ 。另外我们还有一个解密函数,能够将 f 加密后的密文解密成加密前的明文。对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用对C’进行解密得到的结果一般是毫无意义的乱码。但是,如果 f 是个可以

2021-09-30 20:11:07 6010 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除