信息安全试验课遇到的一个问题
来源:互联网 发布:淘宝超级店长软件 编辑:程序博客网 时间:2024/06/04 23:26
最近在学习信息安全试验,偷懒的我,就直接按照书上的算法来写了,根本没有理解算法,但是接连遇到了错误,我开始一直以为是书上算法错了(so arrogant),结果今天单步跟踪了下才发现问题所在,而这个问题其实也是十分典型的。
题目是要求用扩展欧几里得算法求乘法逆元。
首先看下出错地方的算法t1=(u-q*v1)mod m,因为一开始老师要求所有的数据都是unsigned int,所以我压根就没考虑的将所有变量都声明成unsined int,但是书上这里却出现了t1=-13,所以我当机立断改了所有的变量,改成了int,但是结果依然是错的,继续跟踪,还是这个点出错,我这才想起m还是unsigned int的,在求mod的运算的时候前面的-13会被转换成unsigned int类型,也就是INT_MAX-13,用这个数字去求余当然是错的,所以只需要将m改成int类型就可以了,但是调用的时候最好要强制类型转换一下。
下面给出源代码
int Euclid_inv(int a, int m){// step 1int u = 1, g = a, v1 = 0, v3 = m;int t3;do {// step 2int q = g / v3;t3 = g % v3;// step 3if (t3 != 0) {int t1 = (u - q*v1) % m;u = v1;g = v3;v1 = t1;v3 = t3;}// step 4} while (t3 != 0);g = v3;// step 5if (g != 1)return 0; // inverse element did not existedif (g == 1){if (v1 > 0)return v1;elsereturn m + v1;}}
另外这种学习方法很不可取。
0 0
- 信息安全试验课遇到的一个问题
- 信息安全试验-DES加密!
- 在看试验php木马是遇到的问题
- 遇到的一个问题
- 遇到的一个问题
- 一个HttpClient的试验
- setMask遇到的安全沙箱问题
- 浅析安全架构中遇到的问题
- ios开发 CLLocationManager获取位置信息时遇到的一个小问题
- 记录一个使用Hibernate Validator验证信息参数化遇到的问题
- 信息安全问题是互联网的首要问题.
- 我遇到的一个问题
- 重装系统遇到的一个问题
- 遇到的一个小问题
- 遇到的一个模板问题
- 开机遇到的一个问题
- cygwin遇到的一个问题
- 之前遇到的一个问题
- sysbench 基准测试简介
- hdoj2544_最短路(最短路径)
- 112A - Petya and Strings
- js闭包的理解
- hdu1492 The number of divisors(约数) about Humble Numbers(公约数个数问题)
- 信息安全试验课遇到的一个问题
- 个号几个环节各环节
- imx6 uboot logo
- iOS开发笔记
- 连载一 新的开始
- oracle 常用查询总结
- [150521]讲述Linux ftp命令的使用方法
- Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送
- Android AlarmManager实现不间断轮询服务