编写一个简单加密程序!!!

时间:2025-01-23 07:03:26

编写一个简单加密程序

输入一个6位整数的明码,按以下方法加密:首先,将每位数字替换成它与7相加之和再用10求模的结果;
然后逆置 ,最后输出密码。在编写程序,把这个密码还原成明码。若输入错误显示错误信息后退出程序。

首先拿到这道题我们直到三个模块:加密,解密,还有错误信息退出。
先来分析加密;
1.不用数组时取出每一位我们知道可以用取余的方法,在不断÷10,将剩余的数再取余可以得到每一位数,得到固定位的数字后我们对这个数进行操作,(用jieguo来计最后的结果)+7再%10,为了逆置,将该数字操作过后得到的数字每次循环都×10,共循环6次可以得到,部分代码如下:

for(i=1;i<=6;i++)
{
jieguo*=10;//每次的数字向前移一位如2变成20要*10,20*10=200
t0=n%10;//n是原数,用t 得到每位数字
t1=(t0+7)%10;//操作后的数字
jieguo+=t1;
n=n/10;//因为n是int型,若n=666666,算后结果为66666
}

然后就是解码了,可以知道两者就是(+7%10)这步算法不同其他全都一样
若原来为200911则显示密码是886779,我们分析加密可知2+7=9%10就=9,1+7=8%10就=8,0+7=7%10就=7而小于7的数就一定是+7后结果大于十要了一个个位数,所以如果加密完的数jieguo中进行取各位数字,有两种情况,若(>7)则减去7就好,若(<7)n2+=t+10-7,其他过程全仿照上面只是别将变量弄混即可

for(i=1;i<=6;i++)
{n2*=10;
t=jieguo%10;
if(t>=7)n2+=t-7;
else 
     n2+=t+10-7;
     jieguo=jieguo/10;}

if(n>999999||n<1000000)
{cout<<“输入错误退出程序\n”
return 0;}
结束!!!撒花