【发布时间】:2010-09-15 05:20:11
【问题描述】:
我正在编写一个适用于“流”的 XXTEA 加密算法的实现,即可以像这样使用:crypt mykey output。
其中一个必要条件是它根本无法访问文件(它只读取固定大小的块,直到找到 EOF)。该算法需要数据字节是4的倍数,所以需要添加一个填充。
对于纯文本,一个好的解决方案是用 NULL 填充,在解密时忽略 NULL,但相同的策略不能用于二进制流(可以包含嵌入的 NULL)。
我已经阅读了常见的解决方案,比如用丢失的字符数填充(如果它错过了 3 个字符,则在末尾附加一个 3、3、3)等等,但我想知道:有一个更优雅的解决方案?
【问题讨论】:
-
您是否有理由自己实现它而不是使用预先存在的实现?很容易意外创建不安全的密码系统。
-
主要是为了学习。我已经改变了范围,现在我让它在“文件”上工作,它允许我获取总大小并编写一个标题,通知添加的填充量。感谢所有 cmets 和建议。
标签: c cryptography stream padding