cryptography - 使用 OpenSSL 库的蒙哥马利归约形式

标签 cryptography openssl montgomery-multiplication

我有 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/

相关文章:

node.js - 来自 Node 和 openssl 库的 Base64 编码产生不同的输出

c++ - 在RSA蒙哥马利乘法的不同MWR2MM算法中,Bizzare的错误结果相同

java - Java 中的可重复加密(可能使用 Jasypt)

cryptography - 将 .pem 公钥和私钥导入 JKS keystore

c++ - 奇怪的调用栈,会不会是asio使用openssl的问题?

ssl - 无法通过 CLI 建立 tls1.2 连接

c - 如何将 UInt64 数组转换为 UInt16 数组以执行多精度乘法?

java - RSA加解密: BadPaddingException : Data must start with zero

java - OCSP响应中的responderID有什么用?