SEAL全同态加密开源库(七) rns剩余数系统-源码解析
2021SC@SDUSC
2021-11-21
前言
这是SEAL开源库代码分析报告第七篇,本篇将继续分析util文件夹中的rns.h和rns.cpp,也即剩余数系统。
理论知识补充
推荐一篇很好的初学者入门博客,陈志罡教授写的:科学网—整数上全同态加密方案分析(1)–献给全同态加密的初学者 - 陈智罡的博文 (sciencenet.cn)
本期的理论知识补充,我们介绍RNS,剩余数系统。
剩余数表示系统(RNS,residue number system)是一种用较少的数表示较多的数的表示系统。RNS可显著提高信号处理应用中某些算法密集型场景的算法速度。此外,RNS也是研究快速算法极限理论的一个工具。

可能上面的看起来有些困难,这里举个例子,帮助理解。
1500年前的一位古代中国学者写下了这样一个问题:“已知三个数分别除以7、5、2得到的余数是2、3、2,试问这三个数分别是多少?”这可能是历史上第一个使用多剩余数表示的数字。这个问题的本质上是要将 模 (7|5|3) 的剩余数系统 上表示的数 (2|3|2) 转换为其对应的标准十进制形式。用RNS表示,x=(2|3|2)RNS(7|5|2).
对于我们的全同态加密而言,不难看出,其可以应用于用来进行大整数表示以及运算。

本文详细解读了SEAL开源库中利用RNS剩余数系统的设计,包括RNSBase、BaseConverter和RNSTool类的实现,以及关键转换函数和运算。通过实例介绍RNS在加密算法中的应用和优势。
最低0.47元/天 解锁文章
5640

被折叠的 条评论
为什么被折叠?



