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

2019-04-13 21:51发布

下面来看看利用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约化。