信息安全概论作业(一)

问题描述:

“二八”妙龄写密码,看谁聪明“爱死他”。

密文: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"

 

 

 

 

posted @ 2022-04-27 18:15  Cocopink  阅读(80)  评论(0)    收藏  举报