热度 17
2013-3-1 17:10
1005 次阅读|
0 个评论
这是一个简单的课程设计,尚未完成对文件的处理,只是简单的处理数组(图片是从ppt中截取的)。。。。。 一: DES 加解密简介 •DES( Data Encryption Standard) 算法,是一种用 56 位密钥来加密 64 位数据的方法 ; • 于 1977 年得到美国政府的正式许可,然后得到推广; • 是使用比较广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的 DES 用于嵌入式硬件中。 二: DES 加解密原理 DES 加密算法过程 64 位明文:将用户要加密的内容以 8Bytes 为单位进行处理 初始变换:采用特定的初始换位表进行换位(例如输入的第 58 位 , 在输出的时候被置换到第 1 位 ; 输入的是第 7 位 , 在输出时被置换到第 64 位 ) 加密变换 16 轮:初始换位的 64 位的输出作为下一次的输入 , 将 64 位分为左、右两个 32 位 , 分别记为 L0 和 R0, 从 L0 、 R0 到 L16 、 R16, 共进行 16 轮加密变换 。 逆初始变换:进行 16 轮的加密变换之后 , 将 L16 和 R16 合成 64 位的数据 , 再按照逆初始变换表 进行换位 生成 16 个子密钥:将 64 位密钥通过压缩换位去掉每个字节的第 8 位 , 用作奇偶校验 , 因此 , 密钥去掉第 8 、 16 、 24……64 位减至 56 位 , 所以实际密钥长度为 56 位 , 而每轮要生成 48 位的子密钥。 DES 解密算法过程 w 64 位密文:将加密后内容以 8Bytes 为单位进行处理 w 反(逆初始变换):将逆初始换位表顺序反过来进行换位(例如输入的第 58 位 , 在输出的时候被置换到第 1 位 ; 输入的是第 7 位 , 在输出时被置换到第 64 位 ) w 解密变换 16 轮:初始换位的 64 位的输出作为下一次的输入 , 将 64 位分为左、右两个 32 位 , 分别记为 L0 和 R0, 从 L0 、 R0 到 L16 、 R16, 共进行 16 轮解密变换 w 此处的 16 个 key 与加密过程中的顺序正好相反 w 反初始变换:进行 16 轮的解密变换之后 , 将 L16 和 R16 合成 64 位的数据 , 再按照反初始变换表(将初始变换表顺序倒过来)进行换位 w 生成 16 个子密钥:将 64 位密钥通过压缩换位去掉每个字节的第 8 位 , 用作奇偶校验 , 因此 , 密钥去掉第 8 、 16 、 24……64 位减至 56 位 , 所以实际密钥长度为 56 位 , 而每轮要生成 48 位的子密钥。 三: ARM 开发板实现 DES 加解密实现流程 演示: