【发布时间】:2014-11-13 13:12:58
【问题描述】:
我有 N 个 1024 位。我需要将消息 M(512 位)转换为蒙哥马利简化形式,如下所示。
M' = M * R^{-1} mod N
其中 , R = 2 ^ 512 (mod N)
我怎样才能达到效果?
【问题讨论】:
标签: cryptography openssl montgomery-multiplication
我有 N 个 1024 位。我需要将消息 M(512 位)转换为蒙哥马利简化形式,如下所示。
M' = M * R^{-1} mod N
其中 , R = 2 ^ 512 (mod N)
我怎样才能达到效果?
【问题讨论】:
标签: cryptography openssl montgomery-multiplication
如果您直接使用 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
【讨论】: