为什么加密的字节数组与char []表示的长度不同?

时间:2009-03-03 03:17:40

标签: c# encryption

我正在研究一些加密/解密算法,我注意到加密的byte []数组的长度总是33,而char []数组的长度总是44.有谁知道这是为什么?< / p>

(我正在使用Rijndael加密。)

5 个答案:

答案 0 :(得分:3)

Paddingtext encoding。大多数加密算法都具有块大小,并且输入需要填充到该块大小的倍数。此外,将二进制数据转换为文本通常涉及Base64 algorithm,它将3个字节扩展为4个字符。

答案 1 :(得分:1)

对于所有加密算法来说肯定不是这样,它必须只是您正在使用的特定加密算法的属性。在不知道它是什么算法的情况下,我只能猜测,但是比率33/44表明该算法可能在输出字节数组中将每个字符压缩为6位。这可能意味着它假设使用了不超过64个不同的字符,这对于纯文本来说是一个很好的假设(实际上,这就是base64解码的工作原理)。

但是,再次,不知道你正在使用什么算法,这都是猜测。

答案 2 :(得分:1)

如果不知道您正在使用的加密,确定确切原因有点困难。首先,这是一篇关于How to Calculate the Size of Encrypted Data的文章。听起来你可能正在使用明文的哈希,这就是结果更短的原因。

编辑:以下是Rijndael Implementation的来源。看起来密文输出最初与明文输入的长度相同,然后它们在它上面做了一个base64,正如前面提到的那样,它会将你的最终输出减少到原始输入的3/4。

答案 3 :(得分:0)

不,根本不知道,但我首先想到的是,你的加密算法是这样构建的,它会从输出数据中每10位删除1位。

只有你可以肯定地知道,因为我们无法从这里看到你的代码: - )

答案 4 :(得分:0)

如果它只是一对一地替换字节,那将是一个非常糟糕的加密算法。这是50年前的最新技术,it didn't work very well even then。 :)