MFC密码加密生成小工具

3 篇文章 1 订阅

说明

支持同一个密码转换为多种加密ASCII字符组合。


一、使用示例

输入

输入密码:123456
在这里插入图片描述

编码

点击Encrypt按钮
在这里插入图片描述

解码

复制加密的密码(Copy按钮),粘贴在输入框(Paste),点击Decrypt进行解码。
在这里插入图片描述

二、编码

原理:生成小于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);

总结

文章只提供加密的思路,可按照个人喜好进行修改,如增加多个随机数,或更换密码中解码随机数的位置等。
由于使用随机数,同一密码可生成多个加密的字符串。
工具免费分享:https://download.csdn.net/download/long00000kid/37314340

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值