MFC密码加密生成小工具

说明
支持同一个密码转换为多种加密ASCII字符组合 。
一、使用示例 输入
输入密码:
编码
点击按钮

MFC密码加密生成小工具

文章插图
解码
复制加密的密码(Copy按钮),粘贴在输入框(Paste),点击进行解码 。
二、编码
原理:生成小于10的随机数,把输入字符按条件加上对应的随机数和位置号,最后把生成字符+随机数生成密码输出 。
代码如下(示例仅使用2个随机数):
CString input = "123456";int num = strlen(input);char str[100];Rand1 = rand() % 8 + 1;Rand2 = rand() % 9;for (int i = 0; i < num + 1; i++){if (i < num){if (i % 2 == 0){ascii = (int)input[i] + Rand1 + i;}else if (i % 2 == 1){ascii = (int)input[i] + Rand2 + i;}if (ascii > 126){ascii = ascii - 126 + 32;}str[i] = (char)ascii;}else{str[i] = (char)(Rand1 + (rand() % 7 + 4) * 10);str[i + 1] = (char)(Rand2 + (rand() % 7 + 4) * 10);}}input.Format("%s", str);CString output = input.Left(num + 2);
二、解码
原理:解析密码中的随机数,按加密规则逆向解密 。
代码如下:
char str[100];int num = strlen(inputRaw); //inputRaw: CString,加密字符CString input = inputRaw.Right(2);Rand1 = input[0] % 10;Rand2 = input[1] % 10;input = inputRaw.Left(num - 2);for (int i = 0; i < num - 2; i++){if (i % 2 == 0){ascii = (int)input[i] - Rand1 - i;}else{ascii = (int)input[i] - Rand2 - i;}if (ascii < 33){ascii = ascii + 126 - 32;}str[i] = (char)ascii;}inputRaw.Format("%s", str);CString output = inputRaw.Left(num - 2);
总结
文章只提供加密的思路,可按照个人喜好进行修改,如增加多个随机数,或更换密码中解码随机数的位置等 。
【MFC密码加密生成小工具】由于使用随机数,同一密码可生成多个加密的字符串 。