模加法的思想很简单,就是先做大整数的加法,然后再调用BN_nnmod做模运算。
───────────────────────────────────────
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m)
功能: 模加运算
输入: a,b,m【模数】
输出: r ← a + b mod m
返回: 1【正常】 or 0【出错】
出处: bn_mod.c
───────────────────────────────────────
当被加数a和加数b满足0<=a,b<m时,模加运算可以简化。思想很简单:首先做加法r ← a + b,然后判断 r ≥ m是否成立,若成立,则做一次减法r ← r - m。
───────────────────────────────────────
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m)
功能: 快速模加运算
输入: a,b,m【模数】
输出: r ← a + b mod m
返回: 1【正常】 or 0【出错】
出处: bn_mod.c
备注: a和b必须满足条件:0<=a,b<m
───────────────────────────────────────