我有 N 个 1024 位。我需要将消息 M(512 位)转换为蒙哥马利缩减形式,如下所示。
M' = M * R^{-1} mod N
其中 , R = 2 ^ 512 (mod N)
我怎样才能达到这个结果?
最佳答案
如果您直接使用 OpenSSL 中的 bignum 包,则以下内容应该有效。
使用函数 BN_mod_exp
计算您的 R=2^512 (mod N)。
之后,您通过调用 BN_mod_inverse
计算 R 的乘法模逆。这将为您提供 R^-1。
完成后,您只需调用 BN_mod_mul
计算 M',使用刚刚计算的 R^-1 和原始消息进行乘法。
您将在 OpenSSL BigNum 包中找到上述功能。它们位于包含文件中:openssl/bn.h
关于cryptography - 使用 OpenSSL 库的蒙哥马利归约形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26909722/