MIRACL密码库分析报告3 mrio.c
2021SC@SDUSC
mrio1.c和mrio2.c主要实现库的输入输出。
int instr(_MIPD_ flash x,char *string)
{ /* input a big number ** returns length in digits */int i,ipt,n,s,e,pads;BOOL first_after_pad;int ch,lc;
#ifdef MR_FLASHBOOL frac;
#endif
#ifdef MR_OS_THREADSmiracl *mr_mip=get_mip();
#endifif (mr_mip->ERNUM) return 0;MR_IN(76)if (mr_mip->apbase==0 || mr_mip->apbase>256){mr_berror(_MIPP_ MR_ERR_BASE_TOO_BIG);MR_OUTreturn 0;}if (!mr_mip->active){mr_berror(_MIPP_ MR_ERR_NO_MIRSYS);MR_OUTreturn 0;}
该方法主要实现了输入一个大数之后返回其长度的功能。
#ifdef MR_FLASHdone=FALSE;numer(_MIPP_ x,mr_mip->w6);if (mr_mip->RPOINT){ /* output with radix point */denom(_MIPP_ x,mr_mip->w5);if (size(mr_mip->w5)>1){ /* multiply up numerator to get full precision in ** the output. Remember position of radix point. */nw=(int)(lx&MR_MSK);dw=(int)((lx>>MR_BTS)&MR_MSK);if (nw==0) nw++;check=mr_mip->check;mr_mip->check=OFF;if (nw>dw) mr_shift(_MIPP_ mr_mip->w5,nw-dw,mr_mip->w5);if (dw>nw) mr_shift(_MIPP_ mr_mip->w6,dw-nw,mr_mip->w6);nd=mr_mip->nib;if (mr_compare(mr_mip->w6,mr_mip->w5)>=0) nd--;copy(mr_mip->w6,mr_mip->w0);if (((int)mr_mip->w0->len+nd)>2*mr_mip->nib) nd=2*mr_mip->nib-(int)mr_mip->w0->len;mr_shift(_MIPP_ mr_mip->w0,nd,mr_mip->w0);divide(_MIPP_ mr_mip->w0,mr_mip->w5,mr_mip->w6);mr_mip->check=check;rp=mr_mip->pack*(nd+dw-nw);}}
实现了小数和分数的输入输出。
static void cbase(_MIPD_ big x,mr_small oldbase,big y)
{ /* change radix of x from oldbase to base */int i,s;mr_small n;BOOL done;
#ifdef MR_OS_THREADSmiracl *mr_mip=get_mip();
#endifif (mr_mip->ERNUM) return;if (mr_mip->base==oldbase){copy(x,y);return;}MR_IN(13)s=exsign(x);
#ifdef MR_FLASHnumer(_MIPP_ x,mr_mip->w1);denom(_MIPP_ x,mr_mip->w2);done=FALSE;
#elsecopy(x,mr_mip->w1);done=TRUE;
#endifinsign(PLUS,mr_mip->w1);forever{zero(mr_mip->w6);convert(_MIPP_ 1,mr_mip->w0);for (i=0;i<(int)mr_mip->w1->len;i++) { /* this is a bit slow - but not time critical */mr_pmul(_MIPP_ mr_mip->w0,mr_mip->w1->w[i],mr_mip->w5);add(_MIPP_ mr_mip->w6,mr_mip->w5,mr_mip->w6);if (oldbase==0){ /* bit of a frig! */n=mr_shiftbits(1,MIRACL/2);mr_pmul(_MIPP_ mr_mip->w0,n,mr_mip->w0);mr_pmul(_MIPP_ mr_mip->w0,n,mr_mip->w0);}else mr_pmul(_MIPP_ mr_mip->w0,oldbase,mr_mip->w0);}if (mr_mip->ERNUM || done) break;
#ifdef MR_FLASHcopy(mr_mip->w2,mr_mip->w1);copy(mr_mip->w6,mr_mip->w7);done=TRUE;
将x的基数从旧基数改为基数
MIRACL密码库分析报告3 mrio.c相关推荐
- 【Miracl密码库】miracl密码库相关应用整理合集
miracl是一个非常优秀的密码库,包括了大数运算.椭圆曲线.双线性配对等多方面应用. 本文搬运公众号原文,不再重复编辑排版. [Miracl密码库]动态库和静态库构建 [Miracl密码库]编译库文 ...
- (ubuntu)linux和mac安装Miracl密码库
只要你按照以下步骤操作,可以得到Miracl密码库的静态编译文件.a. 步骤一: 官网仓库 注意: 是下载ZIP,而不是直接clone下来,不然的话是绝对不行的! 步骤二: unzip -j -aa ...
- oracle11g 安装报告,[数据库]oracle11g的standby性能分析报告statpack安装_星空网
oracle11g的standby性能分析报告statpack安装 2016-05-30 0 一般常见的分析standby database的性能问题的方法就是通过动态性能视图来判断,从11g开始,随 ...
- 如何让主机合规分析报告评分达到90分?
"胖猴,某大型企业高级运维,马哥教育原创作者联盟成员,热爱分享Linux应用技术和原创知识,有30万字以上的原创内容." 说明:本次文档是根据某厂的主机合规分析报告内容进行整改的, ...
- 信息安全基础综合实验之Fermat素性检验算法(通过调用miracl大数库来实现)
信息安全基础综合实验总共包含有二大块的内容,分为小组作业(小组作业有四项任务,为Fermat素性检验算法.中国剩余定理.密钥分配以及SM3的实现)和个人作业(SM2加密算法的实现),我也会分别通过五篇 ...
- 2022 医疗卫生行业应急响应形势分析报告 脱敏板
声明 本文是学习2022医疗卫生行业网络安全分析报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 医疗卫生行业应急响应形势分析 2021年1-12月,奇安信集团安服团队共参 ...
- 如何从0到500000000?抖音年度分析报告
一年之前,抖音还未进入主流用户视野:一年之后,全球月活跃用户数超过5亿.今天重新对抖音进行分析解读. 一年前,当时的抖音独立设备数仅仅才3080万台/月. 如今的抖音独立设备数已经达到了26327万台 ...
- android.troj.opfake.a病毒,FakeMsdMiner挖矿病毒分析报告
原标题:FakeMsdMiner挖矿病毒分析报告 近日,亚信安全截获新型挖矿病毒FakeMsdMiner,该病毒利用永恒之蓝,永恒浪漫等NSA漏洞进行攻击传播.该病毒具有远控功能,可以获取系统敏感信息 ...
- 超8成项目存在高危开源漏洞 《2021中国软件供应链安全分析报告》发布
聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...
最新文章
- 奇葩错误 WIFI搜不到、无线网卡连接不上
- 本地数据源:使用firebird数据库
- C++ boost 实例学习
- 关于npm和yarn 安装vue脚手架
- 【剑指offer】面试题09:用两个栈实现队列(Java)
- 斯皮尔曼相关系数_惊艳!JASP相关系数矩阵及热力图
- shiro自定义logout filter
- HTML5期末大作业:动漫网站设计——千与千寻(10页) 含设计报告 HTML+CSS+JavaScript 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品
- linux视频嗅探工具,Linux 5.13增加来自英特尔的KCPUID组件 帮助准确识别新推出的CPU...
- Python:实现random forest regressor随机森林回归器算法(附完整源码)
- API 库的文档体系支持:主流编程语言的文档设计
- 游标CURSOR的基本用法
- java:文本框的简单使用
- saas平台 saas服务 什么是saas
- Python爬虫三:抓取链家已成交二手房信息(58W数据)
- 你在职场可能犯下的最大错误
- 干货分享--企业微信社群促活的12种方式
- Matlab一句话画三维应力云图
- 为何推荐windows平台学习机器人操作系统ROS?
- 最长公共子序列问题——LCS算法