Package org.web3j.crypto
Class MnemonicUtils
java.lang.Object
org.web3j.crypto.MnemonicUtils
Provides utility methods to generate random mnemonics and also generate seeds from mnemonics.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic bytecalculateChecksum(byte[] initialEntropy) static byte[]generateEntropy(String mnemonic) Create entropy from the mnemonic.static StringgenerateMnemonic(byte[] initialEntropy) The mnemonic must encode entropy in a multiple of 32 bits.static byte[]generateSeed(String mnemonic, String passphrase) To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt.getWords()static booleanvalidateMnemonic(String mnemonic)
-
Constructor Details
-
MnemonicUtils
public MnemonicUtils()
-
-
Method Details
-
generateMnemonic
The mnemonic must encode entropy in a multiple of 32 bits. With more entropy security is improved but the sentence length increases. We refer to the initial entropy length as ENT. The allowed size of ENT is 128-256 bits.Given a randomly generated initial entropy of size ENT, first a checksum is generated by taking the first
ENT / 32bits of its SHA256 hash. This checksum is appended to the end of the initial entropy. Next, these concatenated bits are split into groups of 11 bits, each encoding a number from 0-2047, serving as an index into a wordlist. Finally, we convert these numbers into words and use the joined words as a mnemonic sentence.- Parameters:
initialEntropy- The initial entropy to generate mnemonic from- Returns:
- The generated mnemonic
- Throws:
IllegalArgumentException- If the given entropy is invalidIllegalStateException- If the word list has not been loaded
-
generateEntropy
Create entropy from the mnemonic.- Parameters:
mnemonic- The input mnemonic which should be 128-160 bits in length containing only valid words- Returns:
- Byte array representation of the entropy
-
getWords
-
generateSeed
To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the derived key is 512 bits (= 64 bytes).- Parameters:
mnemonic- The input mnemonic which should be 128-160 bits in length containing only valid wordspassphrase- The passphrase which will be used as part of salt for PBKDF2 function- Returns:
- Byte array representation of the generated seed
-
validateMnemonic
-
calculateChecksum
public static byte calculateChecksum(byte[] initialEntropy)
-