信息安全概论作业1
Description
尝试用简单方式破译以下密码:
766C7273626F76706A5E6F715F7271766C72706D626B71716C6C71666A62
Solution
首先看见这个不难发现这是一串可见字符的ASCII码的十六进制。
然后尝试把这串字符直接输出,得到了:
vlrsbovpj^oq_rqvlrpmbkqqllqfjb
乱码?不过起码也没那么乱。
那就先试试是不是简单模26循环的密码:
inline int cast(char ch){
if(ch>='0'&&ch<='9') return ch-'0';
if(ch>='a'&&ch<='z') return ch-'a'+10;
return ch-'A'+10;
}
char str[200];
void ywymain(){
scanf("%s",str);
vector<int> vec;
int len=strlen(str);
for(int i=0;i<len;i+=2){
char ch=cast(str[i])*16+cast(str[i+1]);
if(!ch) return;
putchar(ch);
vec.push_back(((ch-'a')%26+26)%26);
}
cout<<endl<<endl;
for(int i=0;i<26;i++){ //枚举所有移位
printf("shift %d: ",i);
for(int j=0;j<vec.size();j++)
putchar((vec[j]+i)%26+'a');
cout<<endl;
}
}
得到了输出:
vlrsbovpj^oq_rqvlrpmbkqqllqfjb
shift 0: vlrsbovpjxoqyrqvlrpmbkqqllqfjb
shift 1: wmstcpwqkyprzsrwmsqnclrrmmrgkc
shift 2: xntudqxrlzqsatsxntrodmssnnshld
shift 3: youverysmartbutyouspenttootime
shift 4: zpvwfsztnbsucvuzpvtqfouuppujnf
shift 5: aqwxgtauoctvdwvaqwurgpvvqqvkog
shift 6: brxyhubvpduwexwbrxvshqwwrrwlph
shift 7: csyzivcwqevxfyxcsywtirxxssxmqi
shift 8: dtzajwdxrfwygzydtzxujsyyttynrj
shift 9: euabkxeysgxzhazeuayvktzzuuzosk
shift 10: fvbclyfzthyaibafvbzwluaavvaptl
shift 11: gwcdmzgauizbjcbgwcaxmvbbwwbqum
shift 12: hxdenahbvjackdchxdbynwccxxcrvn
shift 13: iyefobicwkbdlediyeczoxddyydswo
shift 14: jzfgpcjdxlcemfejzfdapyeezzetxp
shift 15: kaghqdkeymdfngfkagebqzffaafuyq
shift 16: lbhirelfznegohglbhfcraggbbgvzr
shift 17: mcijsfmgaofhpihmcigdsbhhcchwas
shift 18: ndjktgnhbpgiqjindjhetciiddixbt
shift 19: oekluhoicqhjrkjoekifudjjeejycu
shift 20: pflmvipjdrikslkpfljgvekkffkzdv
shift 21: qgmnwjqkesjltmlqgmkhwfllgglaew
shift 22: rhnoxkrlftkmunmrhnlixgmmhhmbfx
shift 23: siopylsmgulnvonsiomjyhnniincgy
shift 24: tjpqzmtnhvmowpotjpnkzioojjodhz
shift 25: ukqranuoiwnpxqpukqolajppkkpeia
我们发现移位是3的时候得到的字符串是:
youverysmartbutyouspenttootime
一开始看到这个的时候,越看越觉得不对劲……总觉得这是干扰用的错误答案
后来问了周围同学们才知道这个就是答案……