c++无规律加密系统(自命名)
2023-09-02 20:39:46
发布于:吉林
加密的结果取决于总长度和对应下标所以即便像是aaaaaaaaaaaaaaaaaaaaaaaaa
这样的也可以做到加密且无规律并不同该程序对数字,字母,以及个别标点有效
主要使用了二元二次函数对单个特定字符进行加密
对已知问题已做出修改
增加了对空格的处理能力
修改了加密体系避免了一些"特殊字符串"
下面是加密程序
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
getline(cin,a);
long long len=a.size();
for(int i=0;i<len;i++){
if(a[i]==' ')continue;
int flag=0;
if(a[i]>='0'&&a[i]<='9'){
a[i]+=(i*(len*(len+6-i)/3)+23%12)+i;
while(a[i]>'9')a[i]-=10;
continue;
}
else if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
if(a[i]>='a'&&a[i]<='z')flag=1;
a[i]+=(i*(len*(len+1-i)/2)+2%100);
if(flag==1){
while(!(a[i]>='a'&&a[i]<='z'))a[i]-=26;
}
else{
while(!(a[i]>='A'&&a[i]<='Z'))a[i]-=26;
}
continue;
}
a[i]+=(i*(len*(len+3-i)/3)+1%11);
}
reverse(a.begin(),a.end());
cout<<a;
return 0;
}
输入样例:
aaaaaaaaaa111111111!BBB222
输出样例:
862XDJ$975251337yoiyoeqcoa
下面是解密程序
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
getline(cin,a);
reverse(a.begin(),a.end());
int len=a.size();
for(int i=0;i<len;i++){
if(a[i]==' ')continue;
int flag=0;
if(a[i]>='0'&&a[i]<='9'){
a[i]-=(i*(len*(len+6-i)/3)+23%12)+i;
while(a[i]<'0')a[i]+=10;
continue;
}
else if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
if(a[i]>='a'&&a[i]<='z')flag=1;
a[i]-=(i*(len*(len+1-i)/2)+2%100);
if(flag==1)while(!(a[i]>='a'&&a[i]<='z'))a[i]+=26;
else {
while(!(a[i]>='A'&&a[i]<='Z'))a[i]+=26;
}
continue;
}
a[i]-=(i*(len*(len+3-i)/3)+1%11);
}
cout<<a;
return 0;
}
输入样例:
915233995093775073737855kxkaohwsihyesbucwhcuqheca
输出样例:
aaaaaaaaaaaaaaaaaaaaaaaaa111111111111111111111111
全部评论 2
wow
2023-09-02 来自 浙江
0来人捧捧场awa
2023-09-01 来自 吉林
0惊不惊喜
2023-09-02 来自 北京
0哇"真惊喜"~
2023-09-02 来自 吉林
0
有帮助,赞一个