我有1024位的N.我需要将消息M(512位)转换为蒙哥马利缩减形式,如下所示。
M'= M * R ^ { - 1} mod N
其中,R = 2 ^ 512(mod N)
如何实现结果?
答案 0 :(得分:2)
如果您直接使用OpenSSL中的bignum包,则以下内容应该有效。
使用函数BN_mod_exp
计算R = 2 ^ 512(mod N)。
然后通过调用BN_mod_inverse
来计算R的乘法模逆。这将给你R ^ -1。
完成后,您只需通过调用BN_mod_mul
来计算您的M',然后使用刚刚计算出的R ^ -1和原始信息进行乘法。
您将在OpenSSL BigNum Package中找到上述功能。它们位于包含文件中:openssl / bn.h