mfc实现仿射和凯撒加密解密
来源:互联网 发布:唯品会显示网络未连接 编辑:程序博客网 时间:2024/05/16 08:56
核心代码如下:
//加密算法 char *encode(char *c_str, int a, int b, int n);//解密算法 char *decode(char *m_str, int a, int b, int n);//设置数组coprime为存放与n互素的元素 void setCoprime(int coprime[], int n);//获取value1,value2的最大公约数 int getGcd(int value1, int value2);//在coprime中寻找a的模n可逆元_a int get_a(int coprime[], int a, int n);char *f_encode(char *c_str, int a, int b, int n){ char *p_str = c_str; //减小副作用 assert(c_str); //判断明文字符串c_str是否为NULL while (*c_str) { if (' ' == *c_str) //遇到空格就跳过 { ++c_str; continue; } if ((*c_str >='A')&&(*c_str<='Z')) { *c_str -= 'A'; //将字符转化为对应数字 *c_str = (a*(*c_str) + b) % n;//加密核心算法 *c_str += 'A'; //将数字转化为字符 } if ((*c_str >='a')&&(*c_str <='z')) { *c_str -= 'a'; //将字符转化为对应数字 *c_str = (a*(*c_str) + b) % n;//加密核心算法 *c_str += 'a'; //将数字转化为字符 } ++c_str; } return p_str;}int get_a(int coprime[], int a, int n){ int i = 0; for (; coprime[i] != 0; i++) if (1 == (a*coprime[i]) % n) return coprime[i]; return 0;}int getGcd(int value1, int value2){ int gcd = 0; //最大公约数 int divisor = 0; //余数 do //辗转相除法 { divisor = value1 % value2; gcd = value2; value1 = value2; value2 = divisor; } while (divisor); return gcd;}void setCoprime(int coprime[], int n){ int i = 1; for (; i < n; i++) if (1 == getGcd(n, i))//判断是否n,i是否互素 *(coprime++) = i; //将i存入coprime中 }char *f_decode(char *m_str, int a, int b, int n){ char *p_str = m_str; //减小副作用 int coprime[32] = { 0 }; //存放小于n并且与n互素的元素 int _a = 0; //存放a的模n可逆元 int i = 0; //迭代因子 assert(m_str); //判断密文字符串m_str是否为NULL for (; i < 32; i++) //将数组元素赋为0 coprime[i] = 0; setCoprime(coprime, n);//设置数组coprime存放与n互素的元素 _a = get_a(coprime, a, n);//在coprime中寻找a的逆元_a while (*m_str) { if (' ' == *m_str) //遇到空格就跳过 { ++m_str; continue; } if ((*m_str >='A') &&(*m_str <='Z')) { *m_str -= 'A'; //将字符转化为对应数字 *m_str = (_a*(*m_str - b + n)) % n;//解密核心算法 *m_str += 'A'; //将数字转化为字符 } if ((*m_str >='a') &&(*m_str <='z')) { *m_str -= 'a'; //将字符转化为对应数字 *m_str = (_a*(*m_str - b + n)) % n;//解密核心算法 *m_str += 'a'; //将数字转化为字符 } ++m_str; } return p_str;}void C和太阳肩并肩的计算器Dlg::OnBnClickedButton10(){ // TODO: 在此添加控件通知处理程序代码 UpdateData(true); int a=_ttoi(str_a); int b=_ttoi(str_b); char *str_f=(LPSTR)(LPCTSTR)str; char *temp=(char*)malloc(strlen(str_f)+1); strcpy(temp,str_f); f_encode(str_f, a, b, N); res=str_f; str=temp; UpdateData(false);}void C和太阳肩并肩的计算器Dlg::OnBnClickedButton11(){ // TODO: 在此添加控件通知处理程序代码 UpdateData(true); int a=_ttoi(str_a); int b=_ttoi(str_b); char *str_f=(LPSTR)(LPCTSTR)str; char *temp=(char*)malloc(strlen(str_f)+1); strcpy(temp,str_f); f_decode(str_f, a, b, N); res=str_f; str=temp; UpdateData(false);}
运行截图如下:
还有大数乘法和大数加法的程序哦
所有源代码,哈哈
链接:http://pan.baidu.com/s/1mh7z2CK 密码:iwdj
1 0
- mfc实现仿射和凯撒加密解密
- 凯撒密码加密解密--JAVA实现(基础)
- 凯撒密码,凯撒加密解密.
- 凯撒 加密 解密
- PYQT5+python3.6+QT编写一个带ui的加密解密小程序<凯撒加密><维吉尼亚加密><仿射加密><培根加密>
- 凯撒(caser)密码实现加密与解密
- 凯撒加密与解密及其python代码的实现
- java小项目,凯撒加密与解密的实现
- Java IO4 实现凯撒密码加密解密文本文件
- Python实现凯撒密码的加密与解密
- 反转和凯撒加密python实现
- C++ 凯撒密码 加密解密
- JAVA之凯撒加密【解密】
- 仿射密码的加密和解密,蛮力攻击C++实现
- 凯撒加密实现
- python实现凯撒加密
- python实现凯撒加密
- 信息安全之仿射密码加密和解密
- oracle DBCA安装数据库 实验
- 数据结构与算法分析:1-2章
- Scrapy 初窥笔记
- struts环境搭建
- Android保持屏幕常亮的三种方法
- mfc实现仿射和凯撒加密解密
- Core Java总结第三章
- django-语法备忘录
- Deep Learning(深度学习)学习笔记整理系列之(三)
- 输出n^n最右边的数的值
- 《编程之法》:寻找和为定值的多个数
- django-celery定时任务
- 类(class)
- EffectiveJava(30) -- 全面解析enum类型