问题描述
|
我在互联网上找到了一些代码示例,这些示例正在使用CipherInputStream或其他方式对字节进行加密...如果我有一个包含1000位的文件,该如何在其上应用DES?我在用Java做
解决方法
Java没有允许您访问任何小于字节的原始类型。因此,您将需要处理字节,而不是Java中的位。
如果我的文件包含1000位怎么办,如何在其上应用DES?
使用字节。 Cipher.doUpdate和Cipher.doFinal方法使用字节,而不是字节数组。使用合适的填充方案来说明所有未填充的数据。
, 尽管票数下降,这是一个相当合理的问题。
许多加密模式(例如CBC)要求输入是基础密码的块大小的倍数(例如AES为16字节或DES为8字节)。为了达到这一目的,使用了一种填充方案。
是否可以用任意位长加密明文取决于您使用的填充方案。
最常用的填充方案(即PKCS#5填充)会将n个值n的字节添加到明文中。
显然,这要求纯文本以字节为单位。但是,鲜为人知的填充方案允许任意输入。例如,所谓的\“ bit padding \”将一个1位附加到您的明文,并根据需要附加0个位,直到您输入的长度是密码的块大小的倍数为止。例如,ISO / IEC 9797-1标准提出了这一建议。
在决定是否要在应用程序中支持任意位长时,还必须考虑要使用的加密库。虽然某些加密算法已经过标准化处理,可以输入任意大小的位,但您的加密库可能未实现。
例如。哈希函数SHA-1很好地定义了输入,例如4位字符串\'0101 \',但是您可以
可能很难找到可以实际计算此哈希值的库。