OpenSSL密码库算法笔记——第 3.2.2章 利用Barrett约化实现
下面来看看利用Barrett约化实现的模乘运算。该运算和前面提到的模乘运算差别不大,都是先做大整数的乘法,只不过现在改用Barrett约化的思想来做模运算,而不是用经典模运算BN_nnmod。
───────────────────────────────────────
int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, BN_RECP_CTX * recp)
功能: 利用Barrett约化做模乘
输入: x【被乘数】,y【乘数】,recp【Barrett模数】
输出: r ← x×y mod recp
返回: 1【正常】 or 0【出错】
出处: bn_recp.c
───────────────────────────────────────
注意:这个模乘法其实是包含了模平方的。在函数体内部,会判断x与y是否相等,如果x=y则先做平方再做Barrett约化,否则,先做乘法再做Barrett约化。
OpenSSL密码库算法笔记——第 3.2.2章 利用Barrett约化实现相关推荐
- OpenSSL密码库算法笔记——第 2.2.4章 Barrett模数与相关函数
为了便于使用Barrett约化,专门定义了一个结构体,我们将它称作Barrett模数.结构体的定义如下: struct bn_recp_ctx_st { BIGNUM N; BIGNUM Nr; in ...
- OpenSSL密码库算法笔记——第6.5.2章 密钥协商函数
现在来看看OpenSSL中哪些函数是用来具体实现密钥协商的. ─────────────────────────────────────── int ECDH_compute_key(void *ou ...
- OpenSSL密码库算法笔记——第4.1.1章 平方和算法
平方和算法是模指数运算的基本.如果指数e的二进制展开为,则利用平方和算法可以这样计算模指数: . ----(4.1) 现在 ...
- OpenSSL密码库算法笔记——第4.1.2章 窗口算法
如果存储空间足够的话,可以事先将一部分计算结果(比如指数很小时的运算结果)存储起来,到后面需要时再直接调用.窗口算法就用到了这种思想,它一次可以处理指数e的多个比特(不妨设为k比特,而k称为窗口的大小 ...
- OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集
在定义椭圆曲线点群时出现了描述曲线所用算法的参数const EC_METHOD *meth,这一节就来看看这个参数有什么用处. 椭圆曲线算法集的定义如下. typedef struct ec_meth ...
- OpenSSL密码库算法笔记——第1.2.2章 comba乘法
comba乘法就是用另外一种顺序来做乘法: ----(1.4) 即按照由低到高的顺序计算乘积r的每一个字.其具体算法如下:(参见[3]算法3) ────────────────── ...
- OpenSSL密码库算法笔记——第1.2.5章 comba平方
comba平方就是将comba乘法和经典平方的思想结合在一起: ----(1.9) 具体算法如下:(参见[3]算法4) ─────────────────────────────────────── ...
- OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义
下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息. 椭圆曲线点群的定义如下. typedef struct ec_group_st EC_GROUP; s ...
- OpenSSL密码库算法笔记——第5.3.1章 椭圆曲线点群的算法集
在使用椭圆曲线之前,必需先设定好曲线上的算法集,只有这样在应用中才知道应该使用哪些函数. 下面就来看看怎样设定好曲线上的方法集. ─────────────────────────────────── ...
- OpenSSL密码库算法笔记——第2.2.2章 Barrett约化的优越性
现在简单的将经典运算和Barrett约化做下对比.经典模运算就是做长除法,而Barrett约化与经典模运算不同. 经典模运算 = 除法. Barrett约化 = 2次特殊的除法 + 2次较特殊的乘法 ...
最新文章
- 重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架
- 从原理到落地,七大维度详解矩阵分解推荐算法
- scala-04For与Function进阶实战、Lazy的使用
- openfiler setup一,安装
- python web-python web入坑指南
- 揭开雷达的面纱(科普) 发射机
- processing python模式_python学习Processing
- 让AI学习如何玩游戏 OpenAI打造强化学习通用模型
- linux待机流程,Linux睡眠喚醒機制--Kernel態
- Libevent初探
- 多mysql实例下开发需要注意主从同步延迟
- stringreader_Java StringReader skip()方法与示例
- Android 控件
- 解密小程序码:36条放射线
- Redis详细安装教程与启动redis
- 图像处理中的数学原理归类
- TKinter美化库——tkkbootstrap
- HTML5游戏实战 1 50行代码实现正面跑酷游戏
- php银行卡号查询接口,银行卡归属地查询
- TypeError: only size-1 arrays can be converted to Python scalars 报错如何解决
热门文章
- 自己处理域名、主机备案流程 + 公网安备流程,总共耗时半个月左右
- android app 检测是否开启了开发者模式
- centos7创建asm磁盘_centos7下安装oracle rac使用udev绑定磁盘方法
- 剑网三手游哪个服务器人多稳定,“剑网三”手游开服后,我听了半个小时的骂街...
- 网易2020校招数据分析方向正式批笔试题 解析
- JavaScript和TypeScript学习心得
- 如何用文本文档编写python程序
- 常用iOS开发网站资源
- Jmeter性能测试之命令行执行和生成测试报告
- selenium调用edge driver的坑