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相关推荐

  1. 【Miracl密码库】miracl密码库相关应用整理合集

    miracl是一个非常优秀的密码库,包括了大数运算.椭圆曲线.双线性配对等多方面应用. 本文搬运公众号原文,不再重复编辑排版. [Miracl密码库]动态库和静态库构建 [Miracl密码库]编译库文 ...

  2. (ubuntu)linux和mac安装Miracl密码库

    只要你按照以下步骤操作,可以得到Miracl密码库的静态编译文件.a. 步骤一: 官网仓库 注意: 是下载ZIP,而不是直接clone下来,不然的话是绝对不行的! 步骤二: unzip -j -aa ...

  3. oracle11g 安装报告,[数据库]oracle11g的standby性能分析报告statpack安装_星空网

    oracle11g的standby性能分析报告statpack安装 2016-05-30 0 一般常见的分析standby database的性能问题的方法就是通过动态性能视图来判断,从11g开始,随 ...

  4. 如何让主机合规分析报告评分达到90分?

    "胖猴,某大型企业高级运维,马哥教育原创作者联盟成员,热爱分享Linux应用技术和原创知识,有30万字以上的原创内容." 说明:本次文档是根据某厂的主机合规分析报告内容进行整改的, ...

  5. 信息安全基础综合实验之Fermat素性检验算法(通过调用miracl大数库来实现)

    信息安全基础综合实验总共包含有二大块的内容,分为小组作业(小组作业有四项任务,为Fermat素性检验算法.中国剩余定理.密钥分配以及SM3的实现)和个人作业(SM2加密算法的实现),我也会分别通过五篇 ...

  6. 2022 医疗卫生行业应急响应形势分析报告 脱敏板

    声明 本文是学习2022医疗卫生行业网络安全分析报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 医疗卫生行业应急响应形势分析 2021年1-12月,奇安信集团安服团队共参 ...

  7. 如何从0到500000000?抖音年度分析报告

    一年之前,抖音还未进入主流用户视野:一年之后,全球月活跃用户数超过5亿.今天重新对抖音进行分析解读. 一年前,当时的抖音独立设备数仅仅才3080万台/月. 如今的抖音独立设备数已经达到了26327万台 ...

  8. android.troj.opfake.a病毒,FakeMsdMiner挖矿病毒分析报告

    原标题:FakeMsdMiner挖矿病毒分析报告 近日,亚信安全截获新型挖矿病毒FakeMsdMiner,该病毒利用永恒之蓝,永恒浪漫等NSA漏洞进行攻击传播.该病毒具有远控功能,可以获取系统敏感信息 ...

  9. 超8成项目存在高危开源漏洞 《2021中国软件供应链安全分析报告》发布

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

最新文章

  1. 奇葩错误 WIFI搜不到、无线网卡连接不上
  2. 本地数据源:使用firebird数据库
  3. C++ boost 实例学习
  4. 关于npm和yarn 安装vue脚手架
  5. 【剑指offer】面试题09:用两个栈实现队列(Java)
  6. 斯皮尔曼相关系数_惊艳!JASP相关系数矩阵及热力图
  7. shiro自定义logout filter
  8. HTML5期末大作业:动漫网站设计——千与千寻(10页) 含设计报告 HTML+CSS+JavaScript 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品
  9. linux视频嗅探工具,Linux 5.13增加来自英特尔的KCPUID组件 帮助准确识别新推出的CPU...
  10. Python:实现random forest regressor随机森林回归器算法(附完整源码)
  11. API 库的文档体系支持:主流编程语言的文档设计
  12. 游标CURSOR的基本用法
  13. java:文本框的简单使用
  14. saas平台 saas服务 什么是saas
  15. Python爬虫三:抓取链家已成交二手房信息(58W数据)
  16. 你在职场可能犯下的最大错误
  17. 干货分享--企业微信社群促活的12种方式
  18. Matlab一句话画三维应力云图
  19. 为何推荐windows平台学习机器人操作系统ROS?
  20. 最长公共子序列问题——LCS算法

热门文章

  1. IT168 CIO频道11月28日至12月01日文章精选
  2. mac登录腾讯企业邮箱
  3. Python到底能做什么
  4. 加班两年只赚2千块:低姿态的人,挣不了大钱
  5. matlab从入门到精通 iso,《MATLAB从入门到精通》.(胡晓冬,董辰辉).[PDF]
  6. 菲涅耳衍射,夫琅禾费衍射
  7. 右键弹出菜单和快捷键的设置
  8. django的update和create高级操作
  9. 身份证照片获取个人信息与银行卡4要素验证
  10. 1——从IOP思想开始