Chinaunix

标题: des算法的明文和密文的长度是否一样 [打印本页]

作者: Linux的追求者    时间: 2009-08-30 14:26
标题: des算法的明文和密文的长度是否一样
高手指教一下
作者: langue    时间: 2009-08-30 14:33
首先你要明白什么是块加密算法(block cipher)。

块加密就是把明文分割成一个个大小相等的块,通常是以 8 字节为倍数是 1 个单位。比如,DES 的块大小是 64 bits,也就是 8 字节。

因为每个块都是固定的长度,所以如果要加密的数据不是块长度的整倍数的话,就需要做填充。填充可以填全零,可以填全一,也可以填随机,有专门的方案,在此不做介绍。

如果做了填充,那么密文会比明文长几个字节,但恢复成明文时可以用一个标记把解密后的数据截断,留下数据,丢弃填充,这样数据的完整性得到了保证。



[ 本帖最后由 langue 于 2009-8-30 14:37 编辑 ]
作者: Linux的追求者    时间: 2009-08-30 14:38
标题: 回复 #2 langue 的帖子
谢谢。如果刚好是8个字节的整数倍的话,那么明文和密文的长度应该相等了。
作者: langue    时间: 2009-08-30 14:42
标题: 回复 #3 Linux的追求者 的帖子
是,但必须指定 ECB 作为操作模式。
如果是 CBC,那么还会多出一个 IV block,你可以浏览 wiki 获取详细信息:
http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
作者: Linux的追求者    时间: 2009-08-30 15:22
标题: 回复 #4 langue 的帖子
其实我要实现的是在Windows环境下加密
在LINUX环境下解密。
头有点大了。
我用的是C。
我现在碰到的问题是,有数据能加密解密,而有的不行。
很郁闷。
LINUX下一行是不是只有80个字符?
作者: langue    时间: 2009-08-30 15:29
用 openssl,直接一个 enc 命令就搞定了,有源代码,找老一点的版本,自己看看就明白。
作者: Linux的追求者    时间: 2009-08-30 15:54
标题: 回复 #6 langue 的帖子
openssl是什么东西?方便不?
作者: yulihua49    时间: 2009-08-31 15:31
原帖由 Linux的追求者 于 2009-8-30 15:54 发表
openssl是什么东西?方便不?

网上搜一下,开源的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2