阅读:1734回复:4
透明加密算法讨论
最近在做透明加密算法时。
对文件进行加密,由于是对Page I/O进行加密。 读写的最小单位是4096. 基于这个原因,选择了比较常用的加密算法,8位为单位进行加密。 在测试过程中发现一个问题,由于文件的长度不可能是8的倍数,当不是8位时加密时写入的最后8位和读取的8位数据不一样,这也造成解密不正确。 如写入(文件长度为3位) 00 01 02 03 04 06 06 07 加密后的数据为:FF FF FF FF FF FF FF FF 读取的数据:FF FF FF XX XX XX XX XX 后面的5位读取不定。 请大家帮忙分析一下解决办法,或者想出一些比较好的加密算法。 |
|
沙发#
发布于:2009-05-28 21:55
既然是pageio那就自动对齐了嘛....
你记录实际长度就行了,在加解密时直接对pageio的pagesize处理即可,可以按512对齐,也可以按4k对齐,怎么搞都行了. |
|
|
板凳#
发布于:2009-05-30 18:27
我记录的就是实际长度,也是以8个字节为单位进行加密的。就是最后的不足8位的无法正常加解密。
按理说,在整个读定过程中,应该是以是pagesize为处理的,那么你无论怎么样将这个PAGE分成若干个数据段都应该可以正常还原了。 |
|
地板#
发布于:2009-05-30 22:49
Don't know which cipher algorithm you are using. I guess it is a block cipher either 3DES or AES in CBC mode. The problem you described is related to CBC cipher mode. CBC needs pedding at the end of cipher text which definitly extends length. You either need to manipulate padding or choose other cipher algorithm or mode.
I'd suggest you start by reading some books regarding cryptography. The book "Applied Cryptography" by Bruce Schneier is the one on my desk all the time. |
|
地下室#
发布于:2009-05-31 16:06
通过在SetInformaiton中增加文件的长度可以解决写入的数据读取不出,但是在读取的时候不知如何将增加的文件长度变小?
Query中已处理但是还是不能从根本上解决问题. |
|