如何在字节数组上添加填充?

Nap*_*pmi 6 java encryption padding

我有一个大小为8的40位密钥,我想向它添加0填充,直到它变为56位.byteArray

byte[] aKey = new byte [8];  // How I instantiated my byte array
Run Code Online (Sandbox Code Playgroud)

有什么想法?

Sri*_*ala 8

8字节数组是64位.如果将数组初始化为

byte[] aKey = new byte [8]
Run Code Online (Sandbox Code Playgroud)

所有字节都用0来初始化.如果你设置前40位,即5个字节,那么你的其他3个字节,即从41到64位仍然设置为0.因此,默认情况下,从第41位到第56位设置为0并且你没有不必重置它们.

但是,如果您的数组已经初始化了一些值,并且您想清除41到56之间的位,那么有几种方法可以做到这一点.

第一: 你可以设置aKey[5] = 0,aKey[6] = 0这将把第6个再见和第7个字节(从第41位到第56位)设置为0

第二:如果你正在处理位,你也可以使用BitSet.但是,在你的情况下,我看到第一种方法更容易,特别是,如果你是Java 7之前,下面的一些方法不存在,你必须编写自己的方法来从字节数组转换为位集,反之亦然.

byte[] b = new byte[8];
BitSet bitSet = BitSet.valueOf(b);
bitSet.clear(41, 56); //This will clear 41st to 56th Bit
b = bitSet.toByteArray();
Run Code Online (Sandbox Code Playgroud)

注意:BitSet.valueOf(byte[])并且BitSet.toByteArray()仅存在于Java 7中.