在密码相关的问题中,经常遇到一些数据处理,在libnum中都可以找到比较合适的封装函数。主要用于素数产生,素性检测,开方求根,求公共因子,椭圆曲线ECC操作,字符转换格式等等。
常用的有:
len_in_bits(n) - 获取n对应的二进制长度
gcd(a, b, ...) - 获取多个数据的公因数
lcm(a, b, ...) - 获取多个数据的公倍数
xgcd(a, b) - 拓展欧几里得算法,返回形式 (x, y, g) 且满足 a * x + b * y = gcd(a, b) = ginvmod(a, n) - 求a对于n的模逆
primes(n) - 产生小于n的素数列表
is_power(n) -检测n是否能写成 p**k, k >= 2的格式,并且 return (p, k) or FalseCurve(a, b, p, g, order, cofactor, seed) 椭圆曲线的类
s2n(s) - 将字符串转化成数值 s2b(s)转化成二进制串
n2s(n) - 将数值转化成字符串 b2s(b) - 二进制串转化成字符串