我的问题很简单我期待加密算法,
我需要加密原始数据(文本等),加密数据大小应与原始数据大小相同? 善意分享你的想法?
实施例: 原始数据是“测试”(因此文本长度为4)预期的加密数据应该像这样的“etst”(所以长度为4)。
答案 0 :(得分:3)
这并非总是可行,尤其是对于数据量较少的情况。我很确定所有标准算法都适用于“块”,这通常是密钥的长度。因此,除非您使用非常弱的密钥,或者使用像替换密码或凯撒密码这样的弱点,否则您的加密数据可能会比原始数据更长一些。
实际上,根据this page,您可以使用流密码并获取与输入大小相同的加密文本。给出的例子是RC4。
答案 1 :(得分:0)
除非您使用普通替换密码(用不同的字母或符号替换字母),否则您正在考虑增加文件大小。如果你选择替代密码那么这些非常容易打破。为什么你需要保持文件大小相同?
答案 2 :(得分:0)
大多数加密算法都适用于数据块。例如,AES适用于128位或16字节的块。如果将块溢出1个字节,则AES必须要求另一个块数据。
使用AES,您将始终得到16字节的倍数。
如果结果数据要大得多,则应确保输入字节流。如果由于某种原因,您将文件中的文本复制为文本,。Net会将其转换为Unicode,这会将您的数据从每个字符8位更改为每个字符16位,这将使输出的大小加倍。