3月23日计算机安全作业1

作业描述如下图
3月23日计算机安全作业1_第1张图片实验说明:
本实验在mac系统下,以C语言完成。

一、DES加密

  1. 源代码:
    参考网址如下:
    https://www.cnblogs.com/wbzhao/archive/2012/04/24/2468366.html
    对源代码进行理解和简单修改,增添加密过程中每个子模块的计时并进行输出。
  2. 三次运行结果如图:

3月23日计算机安全作业1_第2张图片
3月23日计算机安全作业1_第3张图片
3.小结:
DES加密中,加密需要消耗200毫秒左右,即0.2秒。将源码进行简单修改后,可以测得每部分的运行时间。几次实验下来,设置密钥和将密钥转化为二进制的时间都极短,可以忽略,相对来说,DES_MakeSubKeys模块和DES_EncryptBlock模块对整个算法的性能影响较大。

二、AES加密

  1. 算法的一般描述为:
    3月23日计算机安全作业1_第4张图片

  2. 其基本变换包括SubBytes(字节替代)、ShiftRows(行移位)、MixColumns(列混淆)、AddRoundKey(轮密钥加)

  3. 源代码:
    参考网址如下:https://www.cnblogs.com/mingcn/archive/2010/10/31/aes_c.html

  4. 运行结果
    3月23日计算机安全作业1_第5张图片

  5. 小结:
    AES加密中,加密需要消耗100毫秒左右,即0.1秒。将源码进行简单修改后,可以测得每部分的运行时间。几次实验下来,可以发现,模块MixColumns耗时最长。和其原理相结合也可以得出同样的结论——在AES中,列混淆对整个算法的性能影响较大。

三、TEA加密

  1. 源码:
1void encrypt(unsigned long *v, unsigned long *k) {
2     unsigned long y=v[0], z=v[1], sum=0, i;         /* set up */
3     unsigned long delta=0x9e3779b9;                 /* a key schedule constant */
4     unsigned long a=k[0], b=k[1], c=k[2], d=k[3];   /* cache key */
5for (i=0; i < 32; i++) {                        /* basic cycle start */
6         sum += delta;
7         y += ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
8         z += ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);/* end cycle */
9     }
10     v[0]=y;
11     v[1]=z;
12 }
13
14void decrypt(unsigned long *v, unsigned long *k) {
15     unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i; /* set up */
16     unsigned long delta=0x9e3779b9;                  /* a key schedule constant */
17     unsigned long a=k[0], b=k[1], c=k[2], d=k[3];    /* cache key */
18for(i=0; i<32; i++) {                            /* basic cycle start */
19         z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);
20         y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
21         sum -= delta;                                /* end cycle */
22     }
23     v[0]=y;
24     v[1]=z;
25 }

TEA加密较为简单,主要的原理和函数如上。每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,一般为64轮或32轮(上例为32轮)。

  1. 运行截图
    3月23日计算机安全作业1_第6张图片

  2. 小结:TEA加密算法属于轻量级,安全性相对DES等要差一些,但是实现容易、原理简单,加密速度较快。

四、SM4加密
5. 源码:
参考网址如下:
https://blog.csdn.net/weixin_42700740/article/details/102667012
6. 运行截图:
3月23日计算机安全作业1_第7张图片
7. 小结:由非线性变换和线性变换组成的合成置换T,也就是T函数,是最能够影响整个程序的子模块。

实验总结

通过本次实验,我比较了四个加密算法的速度(结论为TEA>AES>DES>SM4),但由于我找的源代码不出自同一博主之手,所以加密时间的比较误差较大。然后,我通过测试每个加密算法的子模块需要用的时间,以比较哪个子模块对系统的性能影响较大,但是后来我觉得除了影响时间以外、占用内存、能耗等,都会影响整体的性能,但是我没有权衡出一个很好的综合的比较指标,所以此处暂且通过各个子模块的时间来概括并内部比较(结论为影响DES最大的子模块为:DES_MakeSubKeys模块和DES_EncryptBlock模块;影响AES最大的子模块为:MixColumns;TEA没有什么子模块;影响SM4最大的子模块为:T函数。

你可能感兴趣的:(安全)