模减的思想与模加类似:先做大整数的减法,然后再调用BN_nnmod做模运算。
───────────────────────────────────────
int BN_mod_sub(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 < 0是否成立,若成立,则做一次加法r ← r + m。
───────────────────────────────────────
int BN_mod_sub_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
───────────────────────────────────────