M-Arch(番外12)GD32L233评测-CAU加解密(捉弄下小编)

前言

实验都做完了,一直没有时间把文章梳理出来,时间长了自己都差点忘记了,这一篇测试下CAU加密。

加密的接口都比较简单,但是背后的原理却比较复杂,都是绕来绕去的数学公式,这里就不说了。

以电子密码本模式ECB为例,它是最古老,最简单的模式,将加密的数据分成若干组,每组的大小跟加密密钥长度相同;然后每组都用相同的密钥加密, 比如DES算法, 如果最后一个分组长度不够64位,要补齐64位。

定义:

Enc(X,Y)是加密函数

Dec(X,Y)是解密函数

Key是加密密钥;

Pi ( i = 0,1…n)是明文块,大小为64bit;

Ci ( i = 0,1…n)是密文块,大小为64bit;

ECB加密算法可表示为:

Ci = Enc(Key, Pi)

ECB解密算法可以表示为:

Pi = Dec(Key,Ci)

ECB算法的特点:

  • 每次Key、明文、密文的长度都必须是64位;

  • 数据块重复排序不需要检测;

  • 相同的明文块(使用相同的密钥)产生相同的密文块,容易遭受字典攻击;

  • 一个错误仅仅会对一个密文块产生影响;

示例

比如要加密网址:http://bbs.eeworld.com.cn/thread-1191754-1-1.html

调用的接口很简单,就是 cau_des_ecb,其中的填充是 zero padding

代码:

static void cau_test(void)
{
#ifdef CAU_TEST
__attribute__((aligned(4)))
    uint8_t message[64] = "http://bbs.eeworld.com.cn/thread-1191754-1-1.html";
__attribute__((aligned(4)))
    uint8_t key[8] = "12345678";
__attribute__((aligned(4)))
    uint8_t encrypt_result[65] = {'\0'};
    cau_parameter_struct text;

    rcu_periph_clock_enable(RCU_CAU);
    cau_deinit();
    cau_struct_para_init(&text);
    /* encryption in DES ECB mode */
    text.alg_dir   = CAU_ENCRYPT;
    text.key       = key;
    text.input     = message;
    text.in_length = 64;
    if (SUCCESS == cau_des_ecb(&text, encrypt_result))
    {
        printf("%s\r\n", encrypt_result);
    }
#endif
}

在 https://oktools.net/des 这个网址上进行测试,得到:

密文(HEX):49d7997faa52e7f787f8a086c93603ecf17657b2fca877be973940021ef79967eb690d428e998db0888788c9cbe0842c560fcfdf012d0edc

密文(BASE64):SdeZf6pS5/eH+KCGyTYD7PF2V7L8qHe+lzlAAh73mWfraQ1CjpmNsIiHiMnL4IQsVg/P3wEtDtw=

我们的测试结果:

68656c5a6be1ee4e9dfd5ed7f0a9b90c.png

当我们加密的内容很相似时,它们的密文也很相似:

例如:http://bbs.eeworld.com.cn/thread-1193072-1-1.html

密文是:49d7997faa52e7f787f8a086c93603ecf17657b2fca877be973940021ef79967eeccfeb9a8373972888788c9cbe0842c560fcfdf012d0edc

跟前面测试的就很相似了。

测试一个不相同的:

例如:https://mp.weixin.qq.com/s/ZWl1Q8bLrAr-qKYhV4w4BA

密文是:4a0abde163ab83f2750b82fd3e9cdf84cdf44866b991bbb5134c1178ba90c9115eb1f2f30047e67e7b9d69bde70b75d5965d73eaaece4d74

密文(BASE64):Sgq94WOrg/J1C4L9PpzfhM30SGa5kbu1E0wReLqQyRFesfLzAEfmfnudab3nC3XVll1z6q7OTXQ=

跟之前的差别就大了去了。

捉弄下小编

这里有一段机(违)密(规)的中文,给加密了,看看小编知道咋办不?

原文如下(仅包含一些关键字):******大陆******赤日******斗******戍******

密文如下:

HEX: 24052b69b36f22316c2880d0a3a17c8965397ed481c383026b216078e1270308be0bf72147315d6efb47fcddf4673ecd3cfcd49100445b4684ca1878b6b215499c9f412eb22cb8074a23b0bc561744e7b4ee5973057a4385935c6c26aa86d6cbd4de71d01498c09835ef9fb37e61ef0a23c0e2a1e54f796d2ae3b8c634d79cfd867f7c8b0480e7c2e4c73760f64aabba2c8e983c164eee8c4160ada24e364818c5c304cee08db926f11a362d5777e5f25010592485d518bbdd2518fa75eb2fb2c94c5eea744696d2234915521f82c09bd824a857df02788ad7e7dc470868c7b2afeb2e0440ec411ff616abafe33e35ea2a0d9e93087a893470ba3555bab9980d4d0b3487a00482ba17e509dcd45d8054a987c74b0851e869be81a35f57e3912c626f9021ac21989ae37f442c9c4c67327bf039b77c81b673d2e8eca5ae83f4445df0e903b0b4b98ee1ebafdddbfb17ba2fffff5d84852f58b04bb7dc2572ae4d88b453489228c7e1977c6b9c1d2af1bac48876c0acb9a8b1

Base64: JAUrabNvIjFsKIDQo6F8iWU5ftSBw4MCayFgeOEnAwi+C/chRzFdbvtH/N30Zz7NPPzUkQBEW0aEyhh4trIVSZyfQS6yLLgHSiOwvFYXROe07llzBXpDhZNcbCaqhtbL1N5x0BSYwJg175+zfmHvCiPA4qHlT3ltKuO4xjTXnP2Gf3yLBIDnwuTHN2D2Squ6LI6YPBZO7oxBYK2iTjZIGMXDBM7gjbkm8Ro2LVd35fJQEFkkhdUYu90lGPp16y+yyUxe6nRGltIjSRVSH4LAm9gkqFffAniK1+fcRwhox7Kv6y4EQOxBH/YWq6/jPjXqKg2ekwh6iTRwujVVurmYDU0LNIegBIK6F+UJ3NRdgFSph8dLCFHoab6Bo19X45EsYm+QIawhmJrjf0QsnExnMnvwObd8gbZz0ujspa6D9ERd8OkDsLS5juHrr93b+xe6L///XYSFL1iwS7fcJXKuTYi0U0iSKMfhl3xrnB0q8brEiHbArLmosQ==

解密提示:

中文->转unicode码->DES ECB(key:12345678)

9b239d72e3c11e13633e88214e74efb8.gif 614410b923cca4197249ac00e422b112.png ab425a15c2eae04a2e0348661f96e2f3.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值