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)
有什么想法?
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中.