用MFC打造你的的移位密码解密器
2016-04-14 10:13
218 查看
这是上年写的,直接开给大家了,大家一起学习分享吧~~~~~~
先看看效果
这个在简单的ctf中还是很有用的,/article/9449658.html,我在这里用了好几次了
一切都是从简单做起的吧,不写简单的工具怎么写高大上的工具呢。
工具下载:https://raw.githubusercontent.com/giantbranch/MyLearningCode/master/VC%2B%2B6.0/MySoftware/moveDecrypt/Release/moveDecrypt.exe
工程及源码:https://github.com/giantbranch/MyLearningCode/tree/master/VC%2B%2B6.0/MySoftware/moveDecrypt
选择基本对话框就可以了
最重要的id一定要命名好,最后就只是后面不同,就1-26啦
跟着给解密按钮添加响应函数就可以啦
真正的解密代码
GetId代码(就是获取下面25个框的id)
先看看效果
一切都是从简单做起的吧,不写简单的工具怎么写高大上的工具呢。
工具下载:https://raw.githubusercontent.com/giantbranch/MyLearningCode/master/VC%2B%2B6.0/MySoftware/moveDecrypt/Release/moveDecrypt.exe
工程及源码:https://github.com/giantbranch/MyLearningCode/tree/master/VC%2B%2B6.0/MySoftware/moveDecrypt
1.需要的基础
C++基础,MFC的基本编程2.开发环境
vc++6.0,当然vs的各大版本和最新版也是没问题的3.新建个工程
选择基本对话框就可以了
4.设计界面
新建个对话框最重要的id一定要命名好,最后就只是后面不同,就1-26啦
跟着给解密按钮添加响应函数就可以啦
5.解密代码编写
下面的是解密按钮的响应函数void CMoveDecryptDlg::OnButtonDecrypt() { // TODO: Add your control notification handler code here char szWord[100]; GetDlgItem(IDC_EDIT_WORD)->GetWindowText(szWord, 100); //获取输入框的字符串 Decrypt(szWord);//调用解密函数 }
真正的解密代码
VOID CMoveDecryptDlg::Decrypt(char *szWord) { CString str; int id; for (int j = 1; j <= 25; j++)//1-25次移位 { id = GetId(j-1); for (int i = 0; i < strlen(szWord); i++)//根据字符串长度,依次移位,只处理大小写字母 { if (szWord[i]>='a'&&szWord[i]<='z')//如果是小写字母 { szWord[i] = (szWord[i] - 'a' + 1) % 26 +'a'; //szWord[i] - 'a'就是距离a的距离,+1就是每次循环移动一位,当然还要在26的范围内,最后还要加上a的ASCII码97,因为与a的距离再加97才能获得其最终的ASCII码 }else if (szWord[i]>='A'&&szWord[i]<='Z')//如果是大写字母 { szWord[i] = (szWord[i] - 'A' + 1) % 26 +'A';//道理跟上面一样 } } str.Format("%s",szWord); //获取字符串并转化成Cstring GetDlgItem(id)->SetWindowText(str); //放到对应的ID的框里 } }
GetId代码(就是获取下面25个框的id)
int CMoveDecryptDlg::GetId(int num) { const DWORD MyIdcGroup[] = { IDC_EDIT_DECRYPT1, IDC_EDIT_DECRYPT2, IDC_EDIT_DECRYPT3, IDC_EDIT_DECRYPT4, IDC_EDIT_DECRYPT5, IDC_EDIT_DECRYPT6, IDC_EDIT_DECRYPT7, IDC_EDIT_DECRYPT8, IDC_EDIT_DECRYPT9, IDC_EDIT_DECRYPT10, IDC_EDIT_DECRYPT11, IDC_EDIT_DECRYPT12, IDC_EDIT_DECRYPT13, IDC_EDIT_DECRYPT14, IDC_EDIT_DECRYPT15, IDC_EDIT_DECRYPT16, IDC_EDIT_DECRYPT17, IDC_EDIT_DECRYPT18, IDC_EDIT_DECRYPT19, IDC_EDIT_DECRYPT20, IDC_EDIT_DECRYPT21, IDC_EDIT_DECRYPT22, IDC_EDIT_DECRYPT23, IDC_EDIT_DECRYPT24, IDC_EDIT_DECRYPT25, }; return MyIdcGroup[num]; }
相关文章推荐
- gdi使用
- 小程序:选举投票问题&未知行数输入问题(含代码)
- Android--简单的画画板实例代码
- OpenSSL-RSA 证书的创建
- 我的 Android 开发实战经验总结
- java程序的内存分析
- 最受欢迎的 FTP 客户端软件
- 如何在程序退出的时候清除activity栈
- 检测iOS的APP性能的一些方法
- IOS 面试题总结
- 那些年你用过的 Android 开源项目都有什么?
- ionic框架对Android返回键的处理
- Servlet过滤器(非法字符审核案例)
- 全面理解Unity加载和内存管理
- dot画图的一点实践
- 蓝桥杯 出栈次序
- startActivityForResult() 中requestCode 和 resultCode 的作用
- 一些网站记录
- 博客已迁移
- NULL指针、零指针、野指针