Chinaluo_007
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2010-04-13
  • 粉丝1
  • 关注1
  • 积分40分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1601回复:4

透明加密算法讨论

楼主#
更多 发布于:2009-05-28 13:04
最近在做透明加密算法时。
对文件进行加密,由于是对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位读取不定。


请大家帮忙分析一下解决办法,或者想出一些比较好的加密算法。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2009-05-28 21:55
既然是pageio那就自动对齐了嘛....

你记录实际长度就行了,在加解密时直接对pageio的pagesize处理即可,可以按512对齐,也可以按4k对齐,怎么搞都行了.
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
Chinaluo_007
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2010-04-13
  • 粉丝1
  • 关注1
  • 积分40分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-30 18:27
我记录的就是实际长度,也是以8个字节为单位进行加密的。就是最后的不足8位的无法正常加解密。

按理说,在整个读定过程中,应该是以是pagesize为处理的,那么你无论怎么样将这个PAGE分成若干个数据段都应该可以正常还原了。
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于: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.
Chinaluo_007
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2010-04-13
  • 粉丝1
  • 关注1
  • 积分40分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-05-31 16:06
通过在SetInformaiton中增加文件的长度可以解决写入的数据读取不出,但是在读取的时候不知如何将增加的文件长度变小?

Query中已处理但是还是不能从根本上解决问题.
游客

返回顶部