计算机 密码学 实验一,计算机网络安全技术-实验一-密码学基础

41528d3028836879cd698677c3999917.gif计算机网络安全技术-实验一-密码学基础

计算机科学与技术系实 验 报 告专业名称 网络工程 课程名称 计算机网络安全技术 项目名称 密码学 班 级 13 网工(1)班 学 号 1304031030 姓 名 余世光 同组人员 无 实验日期 2016/5/8 实验一 密码学密码学数学基础实验一、实验内容:使用运算器工具完成大数运算、素性测试、模幂、原根、求逆和二次剩余的计算。二、实验原理:1、 大数运算大多数运算器只支持小于 64 位的整数运算,无法进行加密算法的运算。为满足加密算法的需要,可通过建立大整数运算库来解决这一问题。通常通过以下两种方式进行处理:(1)将大整数当作字符串处理,即将大整数用 10 进制字符数组表示;这种方式便于理解,但效率较低。(2)将大整数当作二进制流进行处理;计算速度快。2、素性测试Monte Carlo 算法和 Las Vegas 算法均为素性测试的算法。(1)Monte Carlo 算法Monte Carlo 算法又称为概率素性检测算法,算法描述如下:输入:p 为一个正整数;输出:若 p 为素数,输出 YES;否则输出 NO。Prime_Test(p)flag=0;重复 次:在(1,p-1]区间上均匀随机的选取 x;如果 gcd(x,p)>1 或 ,return(NO);如果 flag=0 且 ,flag=1;结束重复;如果 flag=0,即在重复中 没有出现过,return(NO);return(YES)。(2)Las Vegas 算法Las Vegas 算法又称为素性证明,算法描述如下:输入:p 为一个正基数;q1,q2,…,qk 为 p-1 的全体素因子,其中 k≤ ;输出:若 p 为素数,输出 YES;否则输出 NO。Prim_ Certify(p,q[k])在区间[2,p-1]上均匀随机的选取 gfor(i=1,i++,k)do如果 ,输出 NO_DECISION 并终止程序;如果 ,输出 NO 并终止程序;输出 YES 并终止程序。2、 模幂对于 b,c0,c≥0,m>1;输出:b cmod mmod_exp(b,c,m)if(c=0) return (1);if (c mod 2=0) return(mod_exp(b2 mod m,c/2,m));其中 c/2 表示 c 除以 2 取整;return (b·mod_exp(b2 mod m,c/2,m))。3、 原根在数论,特别是整除理论中,原根是一个很重要的概念。对于两个正整数 ,由欧拉定理可知,存在正整数 ,比如说欧拉函数 ,即小于等于 m 的正整数中与 m 互质的正整数的个数,使得 。由此,在 时,定义 a 对模 m 的指数 为使 成立的最小的正整数 d。由前知 一定小于等于 ,若 ,则称 a 是模 m 的原根。4、 求逆乘法逆元的定义为:对于 ,存在于 ,使得于 ,则 w 是可逆的,称 x 为 w 的乘法逆元,记为 ;其中 Zn 表示小于 n 的所有非负整数集合。通常通过扩展欧几里得算法和费马小定理求乘法逆元,此处使用扩展欧几里得算法。扩展欧几里得算法的定义为:如果整数 f1,gcd(d,f)=1,那么 d 有一个模 f 的乘法逆元;即对于小于 f 的正整数 d,存在一个小于 f 的正整数 d-1,使得 。扩展欧几里得算法的具体描述如下:ExtendedEUCLID(d,f)(1) (X1,X2,X3)←(1,0,f);(Y1,Y2,Y3)←(1,0,d)。(2) 若 Y3=0,返回 X3=gcd(d,f);无逆元。(3) 若 Y3=1,返回 Y3=gcd(d,f);Y2=d-1mod f。(4) Q= 。(5) (T1,T2,T3)←(X1-Q·Y1,X2 -Q·Y2,X3-Q·Y3)。(6) (X1,X2,X3)←(Y1,Y2,Y3)。(7) (Y1,Y2,Y3)←(T1,T2,T3)。(8) 返回(2)。5、 二次剩余二次剩余的定义为:a 与 p 互素,p 是奇素数,若 ,则称 a 是模 p 的二次剩余;否则称 a 是模 p 的非二次剩余。二次剩余定理:若 p 是奇素数,则整数 1,2,…,p-1 中正好有(p-1)/2 个是模 p 的二次剩余,其余的(p-1)/2 个是非二次剩余。三、实验环境:ISES 客户端四、实验步骤:(1) 加、减、乘、除、模、求逆运算选择进制类型和计算类型,输入要计算的操作数,点击计算。显示计算后的结果,如图 1 所示。图 1(2) 模幂运算选择进制类型和计算类型,输入要计算的 b、e、m,点击计算。显示模幂计算后的结果,如图 2 所示。图 2(3) 生成大素数原根选择进制类型和计算类型,点击随机生成按钮,显示随机生成的大素数以及大素数的原根,如图 3 所示。图 3(4) 二次剩余判断选择进制类型和计算类型,输入 a、p,点击计算。显示二次剩余的判断结果,如图 4 所示。图 4(5) 素性测试选择进制类型和计算类型,输入待测试的大整数,点击测试。显示测试结果,如图 5,6 所示。图 5图 6五、实验总结:六.实验思考:1、计算 Monte Carlo 算法和 Las Vegas 算法的时间复杂度2、将模幂算法修改为非递归算法,并计算递归与非递归算法的复杂度3、思考如何将扩展欧几里得算法和费马小定理用于求逆散列函数实验一、实验内容:1、通过运算器工具实现 MD5、SHA-1/256 、HMAC 等算法的加解密。2、对两个报文的 MD5 值进行异或比对,进行 SHA-1 的分步计算。3、对 MD5、SHA-1/256 等算法进行扩展实验和算法跟踪。二、实验原理:散列函数是一种单向密码,即是一个从明文到密文的不可逆映射,只有加密过程,不可解密;同时散列函数可以将任意长度的输入经过变换以后得到固定长度的输出。散列函数在完整性认证和数字签名等领域有广泛应用。散列函数应满足以下要求:(1)算法公开,不需要密钥。(2)具有数据压缩功能,可将任意长度的输入转换为固定长度的输出。(3)已知 m,容易计算出 H(m)。(4)给定消息散列值 H(m),要计算出 m 在计算上是不可行的。(5)对任意不同的输入 m 和 n,它们的散列值是不能相同的。1、 MD5 算法MD5(Message-Digest Algorithm 5)即信息-摘要算法,是 MD4 算法的改进;算法的输入为任意长度的消息,分为 512 比特长的分组,输出为 128 比特的消息摘要。处理过程如下:(1)对消息进行填充,使其比特长度为 n 512+448(n 为正整数),填充方式是固定的:第一位为 1,其后各位为 0。(2)附加消息长度,使用上一步骤留出的 64 比特以小端(最低有效字节/位存储于低地址字节/位)方式来表示消息被填充前的长度,若消息长度大于 264,则以 264 为模数取模。(3)对消息摘要缓冲区初始化,算法使用 128 比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值