是否应该将DES之类的加密算法应用于位或字节?

问题描述

| 我在互联网上找到了一些代码示例,这些示例正在使用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 \',但是您可以 可能很难找到可以实际计算此哈希值的库。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...