Java教程

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

本文主要是介绍“二八”妙龄写密码,看谁聪明“爱死他”,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目背景

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

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

解密完成

 

这篇关于“二八”妙龄写密码,看谁聪明“爱死他”的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!