只适用于6位密码且首位不为0.
编写一个简单加密程序。输入一个6位整数的明码,按以下方法加密:首先,将每位数字替换成它与7相加之和再用10求模的结果;然后逆置;最后输出密码。再编写程序,把这个密码还原成明码。若输入错误,则显示错误信息后退出程序。
解密方法:因为大于3的数加密过程为+7-10,小于3的数为+7.相应的解密过程为+10-7和-7,可以整合为+7取模(因为产生的数不会超过20,取模相当于大于10的数-10,小于10的数不变。)
#include<iostream> using namespace std; int main() { int s,i,t[6]; cout << "请输入密码:"<< endl; cin >> s; if(100000<=s&&s<1000000) { //加密代码 if (s > 0) { cout << "显示密码是:" << endl; for (i = 0; i < 6; i++) { cout << ((s % 10) + 7) % 10; t[i] = ((s % 10) + 7) % 10;//记录密码每一位数字 s = s / 10; } } cout << endl; //解码代码 for (i = 5; i >= 0; i--) { //大于3的数加密过程为+7-10,解密为+10-7,小于3的数为+7,解密为-7,可统一为+3取模。 cout << (t[i] + 3) % 10; } } else cout << "输入错误"; return 0; }