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

题目背景

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

密文:766C7273626F76706A5E6F715F7271766C72706D626B71716C6C71666A62

解密过程

“二八”对应十六进制,“爱死他”对应ASCII,所以尝试输出每两位十六进制的数对应的ASCII的字符:

int dst[30];
void decode(char *s)
{
    int i;
    //每两位十六进制字符转成十进制数存到dst数组中
    int temp1, temp2;
    for(i = 0;i < 60;i+=2)
    {
        temp1 = s[i] > 58 ? (s[i] - 55) : (s[i] - 48);
        temp2 = s[i+1] > 58 ? (s[i+1] - 55) : (s[i+1] - 48);
        dst[i/2] = temp1*16 + temp2;
    }
    
    for(i = 0;i < 30;i++)
        printf("%c",dst[i]);
    printf("\n");
}

而输出是:vlrsbovpj^oq_rqvlrpmbkqqllqfjb

所以尝试加上偏移量:

int dst[30];
void decode(char *s)
{
    int i,bias;
    //每两位十六进制字符转成十进制数存到dst数组中
    int temp1, temp2;
    for(i = 0;i < 60;i+=2)
    {
        temp1 = s[i] > 58 ? (s[i] - 55) : (s[i] - 48);
        temp2 = s[i+1] > 58 ? (s[i+1] - 55) : (s[i+1] - 48);
        dst[i/2] = temp1*16 + temp2;
    }
    //加上偏移量
    for(bias = -127; bias < 128; bias++)
    {
        for(i = 0;i < 30;i++)
            printf("%c",dst[i] + bias);
        printf("\n");
    }
}

输出结果:

 

 从挑选出最像明文的字符串:youverysmartbutyouspenttootime

解密完成

 

posted @ 2022-04-29 22:40  Sososoby  阅读(163)  评论(0编辑  收藏  举报