OpenSSL密码库算法笔记——第 3.2.2章 利用Barrett约化实现

本文深入探讨了使用Barrett约化进行模乘运算的方法,详细解释了BN_mod_mul_reciprocal函数的工作原理,包括如何处理模平方操作,以及在不同情况下的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面来看看利用Barrett约化实现的模乘运算。该运算和前面提到的模乘运算差别不大,都是先做大整数的乘法,只不过现在改用Barrett约化的思想来做模运算,而不是用经典模运算BN_nnmod。

───────────────────────────────────────

int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, BN_RECP_CTX * recp)

功能: 利用Barrett约化做模乘

输入: x【被乘数】,y【乘数】,recp【Barrett模数】

输出: r ← x×y mod recp

返回: 1【正常】 or 0【出错】

出处: bn_recp.c

───────────────────────────────────────

注意:这个模乘法其实是包含了模平方的。在函数体内部,会判断x与y是否相等,如果x=y则先做平方再做Barrett约化,否则,先做乘法再做Barrett约化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值