热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

OpenSSL密码库算法笔记——第1.2.1章经典乘法

所谓的经典乘法就是在小学的时候学到的那一套做乘法的方法。如果假设被乘数a和乘数b为:,…………(1.1)则经典乘法是这样做的:。………

所谓的经典乘法就是在小学的时候学到的那一套做乘法的方法。如果假设被乘数a和乘数b为:

,                         …………(1.1)

则经典乘法是这样做的:

                      …………(1.2)

即分别做a×bi,再累加到r上。

算法如下:(参见[1]算法14.12)

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

算法:    经典乘法

step1:   对i从0到(m+n-1),令ri←0。

step2:   对j从0到n-1,执行如下运算:

2.1) c←0。

2.2) 对于i从0到m-1,

2.2.1) 计算 (u,v)= r_{i+j}+a_{i}b_{j}+c

a\times b_{0}       …………(1.3)

这里的h32表示h32比特,h16表示h16比特,其余同理。

说明(2)、(3)可归纳为下表:

函数名称

数学表达式

调用情况

mul         (r, a, bl, bh, c )

a_{j}\times b_{0}

a_{j}\times b_{i}

最底层

表1.2 bn_mulbn_mul_addmul64的比较

关于上述函数与宏定义的关系请参见§1.2.3。

当乘数退化成一个字的时候,可以使用大整数与字的乘法。

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

BN_ULONG bn_mul_word(BIGNUM *a, BN_ULONG w)

功能:    大数与字的乘法

输入:    a【大数】,w【字】

输出:    a←a×w

返回:    1【正常】 or 0【出错】

出处:    bn_word.c

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

注意:这个函数的名称bn_mul_word和前面提到的bn_mul_words(见本小节对经典乘法函数bn_mul_normal的说明(1))很相似,功能也有些相似,都可以看作是做大整数(前者对应BIGNUM *而后者对应BN_ULONG *)与字的乘法。bn_mul_word(a,w)是做大整数与字的乘法a←a×w,而bn_mul_words 主要是被乘法运算调用,作为一个内部子函数来调用,基本上没有作为独立的函数在用。请注意区别。


推荐阅读
  • 车载T-BOX智能网联终端的设计与实现
    本文介绍了一款基于瑞萨RH850微控制器、TICC2640R2F蓝牙微控制器和高通MDM9628处理器的T-BOX车载终端的设计。该终端通过集成CAN总线、GPS定位、数据加密、蓝牙通信和LTE无线数据传输技术,实现了车辆信息的高效采集与云端通信,支持远程车辆控制和诊断等功能。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • 不同城市的Python工程师薪资对比与工程机械操作员的薪资分析
    本文探讨了中国各主要城市Python工程师的薪资水平,并对工程机械行业中多种机械设备操作员的薪资进行了详细分析。通过对比不同设备的操作难度和技术要求,为有意进入该领域的求职者提供了参考。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 探索微信影响力排名的秘密:解读并计算WCI指数
    在日常浏览微信时,我们经常能见到各类新媒体影响力排行榜。其中,最后一列的WCI指标常引起人们的好奇。本文将深入解析WCI的含义及其计算方法,并通过Python代码实例展示如何计算WCI V14.2。 ... [详细]
  • 深入探讨机器学习中的查准率、查全率及F1分数
    本文详细解析了机器学习领域中常用的性能评估指标——查准率、查全率及其综合评价指标F1分数,通过具体案例分析这些指标在实际应用中的重要性和差异。 ... [详细]
  • 对称与非对称加密技术的比较及应用
    本文探讨了对称加密与非对称加密的主要区别,重点分析了非对称加密中的公钥体系及其在解决密钥分发问题上的优势。对称加密依赖单一密钥进行加密解密,而非对称加密则采用一对公私钥来完成安全通信。 ... [详细]
  • 聚焦法是一种采用穷尽搜索策略的Filter型特征选择方法,其核心在于寻找能有效区分不同样本的最小特征集合。此方法的评估标准主要依赖于一致性测量。 ... [详细]
  • Serato 推出全新 Stems 功能,DJ 软件迎来重大升级
    Serato 最近为其 DJ 软件推出了全新的 Stems 功能,使得用户能够轻松地将音乐中的不同部分如人声、旋律、贝斯和节奏进行分离,为音乐创作和现场表演提供了更多可能性。 ... [详细]
  • 本文详细介绍了WebRTC提供的音频处理引擎,包括自动增益控制(AGC)、噪声抑制(ANS)、移动设备声学回声消除(AEC)及静音检测(VAD)等核心算法,并提供了完整的C语言实现代码。 ... [详细]
  • 最近在深入学习《数据结构与算法–JavaScript描述》一书,尝试通过npmjs.org寻找合适的库作为参考,但未能找到完全符合需求的资源。因此,决定自行实现一个字典数据结构,以便日后能够直接应用。 ... [详细]
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
author-avatar
爱与嫉妒咋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有