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

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

你可能感兴趣的:(openssl,密码技术与应用)