信息安全概论作业(一)
问题描述:
“二八”妙龄写密码,看谁聪明“爱死他”。
密文:766C7273626F76706A5E6F715F7271766C72706D626B71716C6C71666A62
思路概述:
“爱死他”:根据密文是数字+字母;很容易想到是ASCII码的别称
“二八”:一开始以为是对原始的ASCII码进行加减16位操作,但是结果仍然是乱码;后来想到可能是进制转换。所以猜测该密文是用十六进制写的
#include<cstdio> #include<string.h> #include<iostream> using namespace std; int main() { char s[100]="766C7273626F76706A5E6F715F7271766C72706D626B71716C6C71666A62",m[100],a[100]; int len = strlen(s); //十六进制读入 for (int i=0;i<len;i+=2) { if(s[i]>='0'&&s[i]<='9') m[i]=(s[i]-'0')*16; if(s[i]>='A'&&s[i]<='F') m[i]=(s[i]-'A'+10)*16; if(s[i+1]>='0'&&s[i+1]<='9') m[i]+=s[i+1]-'0'; if(s[i+1]>='A'&&s[i+1]<='F') m[i]+=s[i+1]-'A'+10; } for(int k=0;k<12;k++) { for (int i=0;i<len;i+=2) { a[i]=m[i]+k; cout<<a[i]; } printf("\n"); for (int i=0;i<len;i+=2) { a[i]=m[i]-k; cout<<a[i]; } printf("\n"); } return 0; }
根据上述代码,发现有一个答案不像是乱码,可以阅读:即“youverysmartbutyouspenttootime"


浙公网安备 33010602011771号