Как создать seed из 128битного числа?

на вход подается строка содержащая 128бит вот такого вида

"01010111111000.....

на выходе должна быть правильная сид-фраза. но 12е слово у меня не получается. подозреваю, что дело в хешировании входящей строки. Но не знаю, как исправить.

private String[] generateMnemonic2(String seedEntropy) { // на вход сид
    System.out.println(seedEntropy);
    String[] mnemonicWords = new String[12];

    for (int i = 0; i < 11; i++) {
      int mnemWord = Integer.parseInt(seedEntropy.substring(i * 11, i * 11 + 11), 2);
      mnemonicWords[i] = English.getWord(mnemWord);
    }
    mnemonicWords[11]=seedEntropy.substring(121,128);  //тут храню остаток временно
    
    String g=DigestUtils.sha256Hex(seedEntropy.getBytes()).substring(0,1);
    System.out.println(g);
    
    String v=mnemonicWords[11]+hexToBinary(g);
    System.out.println(v);
    
    BigInteger sha =new BigInteger(v,2);
    System.out.println(sha.toString());
    
    mnemonicWords[11] = English.getWord(sha.intValue());

    return mnemonicWords;
  }

  String hexToBinary(String hex) {
    int i = Integer.parseInt(hex, 16);
    String bin = Integer.toBinaryString(i);
    return bin;
  }

(слова лежат в массиве поэтому +1 не пишу. Первые 11 слов делаются верно)


Ответы (0 шт):