计算 pow(a,b) mod n

2024-03-14

I want to calculate ab mod n for use in RSA decryption. My code (below) returns incorrect answers. What is wrong with it?

unsigned long int decrypt2(int a,int b,int n)
{
    unsigned long int res = 1;

    for (int i = 0; i < (b / 2); i++)
    {
        res *= ((a * a) % n);
        res %= n;
    }

    if (b % n == 1)
        res *=a;

    res %=n;
    return res;
}

你可以试试这个 C++ 代码。我已将其与 32 位和 64 位整数一起使用。我确信我是从 SO 那里得到这个的。

template <typename T>
T modpow(T base, T exp, T modulus) {
  base %= modulus;
  T result = 1;
  while (exp > 0) {
    if (exp & 1) result = (result * base) % modulus;
    base = (base * base) % modulus;
    exp >>= 1;
  }
  return result;
}

您可以在第 10 页的文献中找到该算法和相关讨论。 244 的

布鲁斯·施奈尔 (1996)。应用密码学:C 语言协议、算法和源代码,第二版(第二版)。威利。 ISBN 978-0-471-11709-4。


注意乘法result * base and base * base在此简化版本中可能会发生溢出。如果模数大于宽度的一半T(即大于最大值的平方根T值),那么应该使用合适的模乘算法 - 请参阅答案使用原始类型进行模乘的方法 /q/12168348.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 pow(a,b) mod n 的相关文章

随机推荐

  • 为什么 Kotlin 中函数不能直接用作 lambda?

    在 Kotlin 中我们不能写 arrayOf 1 2 3 forEach println 但我们必须调用forEach using println 这是因为forEach期望一个 lambda 但是println是一个函数 为什么这些类型
  • 显示:Chrome 中出现了磨合?

    我尝试过使用display run in为了创建一个语义化且美观的元数据名称 值列表 喜欢这样 dl dt Subject dt dd A Question dd dt From dt dd Mr Smith dd dt dt dl
  • 防止 unlist 删除 NULL 值

    我有一个列表向量 我使用unlist在他们 向量中的一些元素是NULL and unlist似乎正在放弃它们 我怎样才能防止这种情况发生 这是一个简单 非 工作示例 展示了这一点不需要的功能 of unlist a c list p1 2
  • iPhone safari 上的奇怪点击事件气泡在冒泡到 document.body 之前停止

    我已将点击事件绑定为 document body onclick function alert aaa 无论我点击什么元素 它在 Android 上或 IOS 上的 Chrome 上都表现良好 但在 iPhone safari 上单击除 a
  • 检测变化的多对多关系

    我试图理解为什么 DbContext 没有检测到多对多关系的变化 这是我在模型配置中设置的 this Configuration ValidateOnSaveEnabled false this Configuration ProxyCre
  • 如何将 PIL 与 PyPy 一起使用?

    我进行了一些搜索 但找不到将 PIL 与 PyPy 一起使用的教程 根据 PyPy 的博客 支持 PIL 我在 PYTHONPATH 中使用 pip 安装了 PIL 下载后 pip make 2个 pyd文件 imaging pyd和 im
  • 将我自己的 SQLite DB 从 Asset 文件夹复制到

    我不明白为什么我无法将数据库文件 abic 复制到应用程序目录 data data context getPackageName databases 这是我的 DataBaseHelper 类 import java io File imp
  • 如何查明转换是否已在节点上运行?

    我怎样才能知道节点上是否已经有一个转换正在运行 例如FadeTransition 您可以随时使用过渡 http docs oracle com javafx 2 api javafx animation Transition html 状态
  • 代码契约:如何处理继承的接口?

    我正在使用 MS Code Contracts 并且在使用接口继承和 ContractClassFor 属性时遇到了障碍 给定这些接口和合约类 ContractClass typeof IOneContract interface IOne
  • IPython 3.5 返回“错误的解释器:没有这样的文件或目录”

    我在尝试使用 IPython 时遇到随机错误 我现在突然无法使用 iPython3 没有任何解释 我不记得除了以太坊客户端之外安装过任何重要的东西 而且我没有下载哈希值或任何东西 突然我明白了 cchilders ipython3 bash
  • 停止模型上的双向数据绑定

    我对 Angular 还很陌生 所以如果这里有一些不正确的想法 请告诉我 我正在尝试基于同一数据集创建两个单独的范围变量 我假设我能够将它们设置为不同的变量 如下所示 并且它会起作用 然而 我发现 无论它们的名称是什么或如何定义 即使是在指
  • 在 Python 中使用 XML 模式进行验证

    我有一个 XML 文件和另一个文件中的 XML 架构 我想验证我的 XML 文件是否遵循该架构 我如何在 Python 中做到这一点 我更喜欢使用标准库 但如果需要 我可以安装第三方包 我假设您的意思是使用 XSD 文件 令人惊讶的是 支持
  • 如何查看docker镜像的日志?

    在docker世界中 我们可以很容易地看到docker容器 即正在运行的镜像 的日志 但在图像创建过程中 通常会发出多个命令 例如 节点项目中的 npm install 命令 查看这些命令的日志也会很有帮助 我快速地从文档中搜索 但没有找到
  • 使用 PhantomJS 嵌入网页的所有图像会产生警告,但可以工作

    我试图通过嵌入所有图像 以及通过这一点后的其他外部资源 将网页转换为单个文件 以下是我运行 PhantomJs 的方式 phantomjs web security false embed images js http localhost
  • 构建代理离线

    我正在使用 TFS 2015 我看到我的构建代理处于离线状态 我启动 VsoWorker exe 来查看日志并了解错误 这是我得到的信息 但我从互联网上找不到任何内容 请问有什么想法吗 16 07 57 649004 Sending tra
  • 使用嵌套 ScrollViewer 忽略水平鼠标滚动

    我在网格周围有一个 ScrollViewer 来垂直滚动其内容
  • 键盘自动校正高度(带/不带自动校正)

    我得到的键盘高度是这样的 void keyboardNotification NSNotification notification NSDictionary keyboardInfo notification userInfo NSVal
  • 使用 CMake 进行 Boost 测试 - 未定义的 main

    我在使用 MacPorts 安装的 Boost 在 Mac 上构建一个使用 Boost Test 的小程序时遇到问题 opt local lib 这是我的最小源文件 test cpp define BOOST TEST MODULE MyT
  • 如何更改 Qthread 内 Qtimer 的时间间隔?

    我希望能够更改 QThread 内 QTimer 的间隔时间 这是我的代码 import sys from PyQt5 import QtWidgets from PyQt5 QtWidgets import QApplication QM
  • 计算 pow(a,b) mod n

    I want to calculate ab mod n for use in RSA decryption My code below returns incorrect answers What is wrong with it uns