關於 DES 或 AES 加密的一點小問題

fox1999 2008-03-31 08:52:22
關於 DES 或 AES 加密的一點小問題

DES 與 AES 都是分組加密的。DES是 8 個字節一組, AES 是 16字節一組。
而現在的問題是我想加密一個不等長度的數據塊,在最後一塊時,就可能出現待加密的數據長度不夠一塊的情況。
這時要如何處理???

我前段時間在一個網絡應用中用到了 AES 加密。
我的做法是,不夠一塊就用 0 填充,再加密。這樣加密過後的數據就可能比加密以前的長度要大。
而接收端不知道原來有效數據有多長。所以我在通訊協議的定義時就在協議頭裡加上了有效數據的長度。接收端得到數據,再查這個地方,就知道有效數據的長度了。

我想知道,除了這種方法,還有沒有別的???
...全文
114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
都是很好的建议! 值得学习
fox1999 2008-04-09
  • 打赏
  • 举报
回复
喔, 明白了。
僵哥 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
还不如直接在开头插入4字节长度,连长度一起加密呢

引用 2 楼 masterz 的回复:
有一种方式是在最后一块的剩余字节中全部填上多余的字节数,比如最后一块大小为8字节,5字节有效,那在最后三字节填充3=8-5,表示有3个字节无效,这样解密后减去这部分就好了。如果原始数据长度刚好是8的整数倍,则多加密一个block,内容为8=8-0,表示该block全部为无效数据。
[/Quote]
放在前面更多的时候需要多一次数据拷贝。
superdiablo 2008-04-08
  • 打赏
  • 举报
回复
我觉得你说的实现方式已经够好了
arong1234 2008-04-08
  • 打赏
  • 举报
回复
还不如直接在开头插入4字节长度,连长度一起加密呢

[Quote=引用 2 楼 masterz 的回复:]
有一种方式是在最后一块的剩余字节中全部填上多余的字节数,比如最后一块大小为8字节,5字节有效,那在最后三字节填充3=8-5,表示有3个字节无效,这样解密后减去这部分就好了。如果原始数据长度刚好是8的整数倍,则多加密一个block,内容为8=8-0,表示该block全部为无效数据。
[/Quote]
masterz 2008-04-08
  • 打赏
  • 举报
回复
有一种方式是在最后一块的剩余字节中全部填上多余的字节数,比如最后一块大小为8字节,5字节有效,那在最后三字节填充3=8-5,表示有3个字节无效,这样解密后减去这部分就好了。如果原始数据长度刚好是8的整数倍,则多加密一个block,内容为8=8-0,表示该block全部为无效数据。
枫血残心 2008-04-08
  • 打赏
  • 举报
回复
建议你看看标准的AES实现函数,网上有原代码。还有你的加密模式不知道是电码本还是CBC模式,不同的模式填充有可能不一样。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧