舊代碼數組
public static void main(String[] args) { SecureRandom random = new SecureRandom(); byte[] key = new byte[16]; random.nextBytes(key); BigInteger bigInteger = new BigInteger(key); System.out.println("old:" + Arrays.toString(key)); System.out.println(bigInteger); System.out.println("new:" + Arrays.toString(bigInteger.toByteArray())); }
雖然這段代碼能夠進行正常轉換,可是BigInteger不是正數範圍,在密碼學計算中,都要求是正數dom
指定byte數組爲正數BigIntegercode
BigInteger m = new BigInteger(1, bytesMessage);
正數BigInteger,會有符號位,去除第一個符號位0,還原獲得原始數組密碼
public static byte[] toByteArray(BigInteger bi) { byte[] array = bi.toByteArray(); if (array[0] == 0) { byte[] tmp = new byte[array.length - 1]; System.arraycopy(array, 1, tmp, 0, tmp.length); array = tmp; }