comba乘法就是用另外一种顺序来做乘法:

          …………(1.4)

即按照由低到高的顺序计算乘积r的每一个字。其具体算法如下:(参见[3]算法3)

───────────────────────────────────────

算法:    comba算法

step1:  

step2:   对k从0到(m+n-1),执行:

2.1) 对每一对,执行:

2.2.1)      (uv)=ai×bj,

2.2.2)      c0←加法(c0,v),c1←带进位加法(c1,u),c2←带进位加法(c2,0)。

2.2)

step3:   。

step3:   返回

───────────────────────────────────────

其中的u、v、c0、c1、c2、ri都是32比特字,(u,v)表示u和v连接成的64比特数。

步骤2中的一个乘法(uv)=ai×bj和三个加法: c0←加法(c0,v),c1←带进位加法(c1,u),c2←带进位加法(c2,0),可以用宏定义#define mul_add_c(BN_ULONG a, BN_ULONG b, BN_ULONG c0, BN_ULONG c1, BN_ULONG c2) 实现,即

            …………(1.5)

comba乘法算法的函数为:

───────────────────────────────────────

void bn_mul_comba8(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b)

功能:    8个字与8个字的comba乘法

输入:    a,b

输出:   

返回:    -

出处:    bn_asm.c

备注:    a、b实际长度超过8时,也仅仅将a、b的低8个字相乘。

───────────────────────────────────────

说明:

(1)、另外还有一个使用comba乘法思想的函数void bn_mul_comba4(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b),它是做4个字与4个字的comba乘法。

(2)、和经典乘法一样,其根本就是做字与字的乘法aj×bi,这个同样用宏定义#define mul64 (BN_ULONG l, BN_ULONG h, BN_ULONG bl, BN_ULONG bh)来实现。请注意这里的参数l和h前后代表的意思不一样:

             …………(1.6)

关于这些函数与宏定义的关系请参见下节§1.2.3。

OpenSSL密码库算法笔记——第1.2.2章 comba乘法相关推荐

  1. OpenSSL密码库算法笔记——第1.2.5章 comba平方

    comba平方就是将comba乘法和经典平方的思想结合在一起: ----(1.9) 具体算法如下:(参见[3]算法4) ─────────────────────────────────────── ...

  2. OpenSSL密码库算法笔记——第6.5.2章 密钥协商函数

    现在来看看OpenSSL中哪些函数是用来具体实现密钥协商的. ─────────────────────────────────────── int ECDH_compute_key(void *ou ...

  3. OpenSSL密码库算法笔记——第 2.2.4章 Barrett模数与相关函数

    为了便于使用Barrett约化,专门定义了一个结构体,我们将它称作Barrett模数.结构体的定义如下: struct bn_recp_ctx_st { BIGNUM N; BIGNUM Nr; in ...

  4. OpenSSL密码库算法笔记——第4.1.1章 平方和算法

    平方和算法是模指数运算的基本.如果指数e的二进制展开为,则利用平方和算法可以这样计算模指数: .                                        ----(4.1) 现在 ...

  5. OpenSSL密码库算法笔记——第4.1.2章 窗口算法

    如果存储空间足够的话,可以事先将一部分计算结果(比如指数很小时的运算结果)存储起来,到后面需要时再直接调用.窗口算法就用到了这种思想,它一次可以处理指数e的多个比特(不妨设为k比特,而k称为窗口的大小 ...

  6. OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集

    在定义椭圆曲线点群时出现了描述曲线所用算法的参数const EC_METHOD *meth,这一节就来看看这个参数有什么用处. 椭圆曲线算法集的定义如下. typedef struct ec_meth ...

  7. OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义

    下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息. 椭圆曲线点群的定义如下. typedef struct ec_group_st   EC_GROUP; s ...

  8. OpenSSL密码库算法笔记——第5.3.1章 椭圆曲线点群的算法集

    在使用椭圆曲线之前,必需先设定好曲线上的算法集,只有这样在应用中才知道应该使用哪些函数. 下面就来看看怎样设定好曲线上的方法集. ─────────────────────────────────── ...

  9. OpenSSL密码库算法笔记——第2.2.2章 Barrett约化的优越性

    现在简单的将经典运算和Barrett约化做下对比.经典模运算就是做长除法,而Barrett约化与经典模运算不同. 经典模运算 = 除法. Barrett约化 = 2次特殊的除法 + 2次较特殊的乘法 ...

最新文章

  1. androidx FloatingActionButton 中间加载的图片显示黑色
  2. Java 8中一些常用的全新的函数式接口
  3. 复现经典:《统计学习方法》​第 11 章 条件随机场
  4. 中国历史上影响最大的10首诗
  5. linux撤销编译,linux重新编译内核
  6. win10下安装lxml
  7. 问题:anaconda: command not found 解决方案
  8. 助力南京打造创新名城 第三届未来网络发展大会将召开
  9. DOM节点操作大全(一)
  10. 关于依赖倒置,控制反转和依赖注入的趣谈
  11. 集中刷新父窗口,关闭子窗口的JS(后台)
  12. AI 最新突破集锦 AI的瓶颈和进展 AI控制核聚变 AI预测蛋白质3D结构 Alpha Fold2 AI证明数学公式 自动驾驶 AI替代的硬件
  13. MacBook安装git教程,git学习这一篇就够了!
  14. 软件项目管理课程设计-数字化校园学工信息系统
  15. 将数字金额转换为对应的中文大写金额
  16. 计算机公式与函数乘法,excel里减法函数是哪个?-excel函数公式乘法
  17. mac怎么无线打印机连接到服务器,苹果电脑连接wifi打印机的方法
  18. Introducing Heka
  19. 如何删除tmp计算机桌面,教你Win10系统中tmp文件删除不了应该如何解决?
  20. 2023AE软件、Adobe After Effects下载、安装教程

热门文章

  1. Mac下部分软件安装后不能使用,需要关闭SIP系统完整性保护
  2. win10鼠标灵敏度怎么调_和平精英:灵敏度怎么调,如果开陀螺仪,调了也没用...
  3. wps邮件合并一页4个准考证
  4. 性价比非常高的华为云云主机
  5. 攻略分队(java实现)
  6. 小米10青春版科学计算机,小米10青春版是什么系统,体验怎么样?
  7. 华为正式发布麒麟980
  8. 假期穿上这款超轻亲子鞋,蹦蹦哒哒合家欢丨钛空舱
  9. 中基鸿业如何正确理解投资理财
  10. 甲机通过传串口控制乙机的LED显示状态