我在此处或一般网络上找不到与 Java 相关的有用答案。问题看起来很简单——我需要一种方法来计算任意大小的字节数组中包含的位数。字节数组可以保存十六进制、十进制或二进制值。
我敢肯定,当我看到答案时,这是让我自责的问题之一,但事实证明这非常令人沮丧。该方法应类似于:
public int bitsInByteArray(byte[] b) {
return - sum of bit count (ie the sum total bits, not the sum of their values)
of each byte in b
}
任何方向或建议将不胜感激。
编辑 - 抱歉,伙计们,我说的完全不对。我正在执行加密分配,并被要求“使用带有密钥 k 的 AES 加密包含 64 个零位的单个块”现在,我创建了 byte[] zeroBlockAes = {0x0,0x0...0x0} 直到它包含64 个零元素。问题是,这确定是 512 位吗?那么我应该只输入八个零值吗?
当我这样做时,我的加密输出是 -75 111 69 107 -18 88 51 89 68 -123 -49 18 -26 -109 94 21
当我再次解密时,我得到了原来的八个零。这在 AES 中是正常的还是我可能做错了什么,我认为分组密码为加密和解密产生了相同大小的输入/输出。