zoukankan      html  css  js  c++  java
  • byte数组和正数BigInteger之间的相互转换

    旧代码

      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不是正数范围,在密码学计算中,都要求是正数

    指定byte数组为正数BigInteger

    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;
        }
    
  • 相关阅读:
    Root of AVL Tree
    04-树4 是否同一棵二叉搜索树
    03-树3 Tree Traversals Again
    03-树2 List Leaves
    283. Move Zeroes
    506. Relative Ranks
    492. Construct the Rectangle
    476. Number Complement
    461. Hamming Distance
    389. Find the Difference
  • 原文地址:https://www.cnblogs.com/victor2302/p/11018189.html
Copyright © 2011-2022 走看看