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

本文深入解析了SEAL全同态加密库中NTT(数论变换)的源码,包括Arithmetic类的算术操作和NTTTables类的构建。NTT是同态加密的核心算法,用于加速多项式乘法。SEAL通过Evaluator类提供了对NTT的便捷操作,如transform_to_ntt和transform_from_ntt,以及multiply_plain_ntt进行快速的明文乘法。文章还介绍了如何使用NTT提高效率并避免不必要的重复变换。

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

2021SC@SDUSC

2021-10-27

前言

这是SEAL开源库代码分析报告第四篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。

ntt.h源码分析

首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函数:

inline std::uint64_t add(const std::uint64_t &a, const std::uint64_t &b) const
            {
                return a + b;
            }

            inline std::uint64_t sub(const std::uint64_t &a, const std::uint64_t &b) const
            {
                return a + two_times_modulus_ - b;
            }

            inline std::uint64_t mul_root(const std::uint64_t &a, const MultiplyUIntModOperand &r) const
            {
                return multiply_uint_mod_lazy(a, r, modulus_);
            }

            inline std::uint64_t mul_scalar(const std::uint64_t &a, const MultiplyUIntModOperand &s) const
            {
                return multiply_uint_mod_lazy(a, s, modulus_);
            }

            inline MultiplyUIntModOperand mul_root_scalar(
                const MultiplyUIntModOperand &r, const MultiplyUIntModOperand &s) const
            {
       
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值