代码之家  ›  专栏  ›  技术社区  ›  devlord

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

  •  3
  • devlord  · 技术社区  · 17 年前

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

    (我使用的是Rijndael加密。)

    5 回复  |  直到 17 年前
        1
  •  3
  •   Jeffrey Hantin    17 年前

    Padding text encoding Base64 algorithm ,它将3个字节扩展为4个字符。

        2
  •  1
  •   David Z    17 年前

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

        3
  •  1
  •   John Ellinwood    17 年前

    How to Calculate the Size of Encrypted Data 。听起来你可能在使用明文的哈希值,这就是为什么结果更短的原因。

    编辑:这是一个 Rijndael Implementation 。看起来密文输出最初与明文输入的长度相同,然后他们对其进行base64处理,正如前面的海报所提到的,这将使您的最终输出减少到原始输入的3/4。

        4
  •  0
  •   paxdiablo    17 年前

    不,完全不知道,但我的第一个想法是,你的加密算法是这样构建的,它从输出数据中每10个删除1个比特。

    只有你能确定,因为我们在这里看不到你的代码:-)

        5
  •  0
  •   Schwern    17 年前
    推荐文章