SEAL全同态加密开源库(七) rns剩余数系统-源码解析
2021SC@SDUSC
2021-11-14
前言
这是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模块,介绍了剩余数系统(RNS)理论及其在全同态加密中的应用。通过实例解读RNSBase、BaseConverter和RNSTool类,展示了如何进行基数转换和关键运算,如求余数操作。适合加密算法开发者和理论研究者参考。
最低0.47元/天 解锁文章
3745

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



