├── .travis.yml ├── LICENSE ├── README.md ├── misc └── license_header.txt ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── github │ │ └── orogvany │ │ ├── bip32 │ │ ├── Network.java │ │ ├── crypto │ │ │ ├── BitUtil.java │ │ │ ├── Hash.java │ │ │ ├── HdUtil.java │ │ │ ├── HmacSha512.java │ │ │ └── Secp256k1.java │ │ ├── exception │ │ │ └── CryptoException.java │ │ ├── extern │ │ │ └── Hex.java │ │ └── wallet │ │ │ ├── Bip44.java │ │ │ ├── CoinType.java │ │ │ ├── HdAddress.java │ │ │ ├── HdKeyGenerator.java │ │ │ └── key │ │ │ ├── Curve.java │ │ │ ├── HdKey.java │ │ │ ├── HdPrivateKey.java │ │ │ └── HdPublicKey.java │ │ └── bip39 │ │ ├── Dictionary.java │ │ ├── Language.java │ │ └── MnemonicGenerator.java └── resources │ └── wordlists │ ├── english.txt │ ├── french.txt │ ├── italian.txt │ ├── japanese.txt │ ├── korean.txt │ └── spanish.txt └── test ├── java └── com │ └── github │ └── orogvany │ ├── bip32 │ ├── Base58.java │ ├── BaseVectorTest.java │ ├── Bip44Test.java │ ├── BitUtilTest.java │ ├── PublicKeyChainTest.java │ ├── SlipVectorOneTest.java │ ├── VectorOneTest.java │ ├── VectorThreeTest.java │ └── VectorTwoTest.java │ └── bip39 │ ├── MnemonicGeneratorTest.java │ ├── Vector.java │ ├── VectorReader.java │ └── VectorTest.java └── resources └── vector └── vector.json /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BIP32-Ed25519-java 2 | 3 | [![Build Status](https://travis-ci.org/orogvany/BIP32-Ed25519-java.svg?branch=master)](https://travis-ci.org/orogvany/BIP32-Ed25519-java) 4 | 5 | 6 | BIP32-Ed25519 HD wallets for java 7 | 8 | Hierarchical Deterministic wallets are a boon to bitcoin, as it solves a problem of backups and allows for much needed functionality. 9 | However, it is fairly specific to secp256k1. 10 | 11 | This project implements BIP-32 extending it with compatibility for Ed25519 12 | 13 | Current state: 14 | * BIP-32 implemented, Ed25519 works for SLIP-0100 15 | * Not using https://cardanolaunch.com/assets/Ed25519_BIP.pdf, decided on using SLIP-0010 due to ease of implementation and test vectors supplied. 16 | * BIP-44 (Paths for HD keys) 17 | * BIP-39 (Mnemonic keys) 18 | 19 | ## Compiling 20 | ``` 21 | mvn clean install 22 | ``` 23 | 24 | For maven use you can use jitpack 25 | 26 | ``` 27 | 28 | com.github.orogvany 29 | BIP32-Ed25519-java 30 | {latest checkin hash} 31 | 32 | ``` 33 | 34 | Jitpack repo 35 | 36 | ``` 37 | 38 | 39 | jitpack.io 40 | https://jitpack.io 41 | 42 | 43 | ``` 44 | -------------------------------------------------------------------------------- /misc/license_header.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 orogvany 2 | 3 | Distributed under the MIT software license, see the accompanying file 4 | LICENSE or https://opensource.org/licenses/mit-license.php -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.github.orogvany 5 | bip32-ed25519-java 6 | 1.0.0-SNAPSHOT 7 | jar 8 | BIP32 for java with Ed25519 extensions 9 | 10 | 11 | Orogvany 12 | https://github.com/orogvany/BIP32-Ed25519-java 13 | 14 | 15 | 16 | 17 | MIT License 18 | https://opensource.org/licenses/MIT 19 | repo 20 | 21 | 22 | 23 | 24 | 25 | bintray 26 | https://dl.bintray.com/terl/lazysodium-maven 27 | 28 | 29 | 30 | 31 | 32 | 33 | org.slf4j 34 | slf4j-api 35 | 1.7.25 36 | true 37 | 38 | 39 | ch.qos.logback 40 | logback-core 41 | 1.2.3 42 | true 43 | 44 | 45 | ch.qos.logback 46 | logback-classic 47 | 1.2.3 48 | true 49 | 50 | 51 | org.bouncycastle 52 | bcprov-jdk15on 53 | 1.60 54 | true 55 | 56 | 57 | org.apache.commons 58 | commons-lang3 59 | 3.7 60 | true 61 | 62 | 63 | net.i2p.crypto 64 | eddsa 65 | 0.3.0 66 | true 67 | 68 | 69 | junit 70 | junit 71 | 4.12 72 | test 73 | 74 | 75 | com.fasterxml.jackson.core 76 | jackson-core 77 | 2.9.5 78 | test 79 | 80 | 81 | com.fasterxml.jackson.core 82 | jackson-databind 83 | 2.9.5 84 | test 85 | 86 | 87 | 88 | 89 | 90 | 91 | org.apache.maven.plugins 92 | maven-compiler-plugin 93 | 3.7.0 94 | 95 | 1.8 96 | 1.8 97 | 98 | 99 | 100 | 101 | com.mycila 102 | license-maven-plugin 103 | 3.0 104 | 105 |
misc/license_header.txt
106 | UTF-8 107 | 108 | src/main/**/*.java 109 | src/test/**/*.java 110 | 111 |
112 |
113 |
114 |
115 | 116 |
-------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/Network.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | 11 | /** 12 | * Defined network values for key generation 13 | */ 14 | public enum Network { 15 | mainnet("0x0488ADE4", "0x0488B21E"), 16 | testnet("0x04358394", "0x043587CF"); 17 | 18 | private final byte[] privatePrefix; 19 | private final byte[] publicPrefix; 20 | 21 | Network(String privatePrefix, String publicPrefix) { 22 | this.privatePrefix = Hex.decode0x(privatePrefix); 23 | this.publicPrefix = Hex.decode0x(publicPrefix); 24 | } 25 | 26 | public byte[] getPrivateKeyVersion() { 27 | return privatePrefix; 28 | } 29 | 30 | public byte[] getPublicKeyVersion() { 31 | return publicPrefix; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/crypto/BitUtil.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.crypto; 8 | 9 | public class BitUtil { 10 | 11 | /** 12 | * Checks bit value from the left, 1 based 13 | * 14 | * @param data data 15 | * @param index index to check 16 | * @return true if set 17 | */ 18 | public static boolean checkBit(byte data, int index) { 19 | byte bit = (byte) ((data >> (8 - index)) & 1); 20 | return bit == 0x1; 21 | } 22 | 23 | /** 24 | * Set a bit of a byte 25 | * 26 | * @param data data 27 | * @param index index to set 28 | * @return byte with bit set 29 | */ 30 | public static byte setBit(byte data, int index) { 31 | data |= 1 << (8 - index); 32 | return data; 33 | } 34 | 35 | /** 36 | * Unset a bit of a byte 37 | * 38 | * @param data data 39 | * @param index index to clear 40 | * @return byte with bit unset 41 | */ 42 | public static byte unsetBit(byte data, int index) { 43 | data &= ~(1 << (8 - index)); 44 | return data; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/crypto/Hash.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.crypto; 8 | 9 | import com.github.orogvany.bip32.exception.CryptoException; 10 | import org.bouncycastle.crypto.digests.RIPEMD160Digest; 11 | 12 | import java.security.MessageDigest; 13 | import java.security.NoSuchAlgorithmException; 14 | 15 | /** 16 | * Basic hash functions 17 | */ 18 | public class Hash { 19 | 20 | /** 21 | * SHA-256 22 | * 23 | * @param input input 24 | * @return sha256(input) 25 | */ 26 | public static byte[] sha256(byte[] input) { 27 | try { 28 | MessageDigest digest = MessageDigest.getInstance("SHA-256"); 29 | return digest.digest(input); 30 | } catch (NoSuchAlgorithmException e) { 31 | throw new CryptoException("Unable to find SHA-256", e); 32 | } 33 | } 34 | 35 | /** 36 | * SHA-512 37 | * 38 | * @param input input 39 | * @return sha512(input) 40 | */ 41 | public static byte[] sha512(byte[] input) { 42 | try { 43 | MessageDigest digest = MessageDigest.getInstance("SHA-512"); 44 | return digest.digest(input); 45 | } catch (NoSuchAlgorithmException e) { 46 | throw new CryptoException("Unable to find SHA-512", e); 47 | } 48 | } 49 | 50 | /** 51 | * sha256(sha256(bytes)) 52 | * 53 | * @param bytes input 54 | * @return sha'd twice result 55 | */ 56 | public static byte[] sha256Twice(byte[] bytes) { 57 | return sha256Twice(bytes, 0, bytes.length); 58 | } 59 | 60 | public static byte[] sha256Twice(final byte[] bytes, final int offset, final int length) { 61 | try { 62 | MessageDigest digest = MessageDigest.getInstance("SHA-256"); 63 | digest.update(bytes, offset, length); 64 | digest.update(digest.digest()); 65 | return digest.digest(); 66 | } catch (NoSuchAlgorithmException e) { 67 | throw new CryptoException("Unable to find SHA-256", e); 68 | } 69 | } 70 | 71 | /** 72 | * H160 73 | * 74 | * @param input input 75 | * @return h160(input) 76 | */ 77 | public static byte[] h160(byte[] input) { 78 | byte[] sha256 = sha256(input); 79 | 80 | RIPEMD160Digest digest = new RIPEMD160Digest(); 81 | digest.update(sha256, 0, sha256.length); 82 | byte[] out = new byte[20]; 83 | digest.doFinal(out, 0); 84 | return out; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/crypto/HdUtil.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.crypto; 8 | 9 | import org.apache.commons.lang3.ArrayUtils; 10 | 11 | import java.math.BigInteger; 12 | import java.util.Arrays; 13 | 14 | /** 15 | * General Util class for defined functions. 16 | */ 17 | public class HdUtil { 18 | 19 | /** 20 | * ser32(i): serialize a 32-bit unsigned integer i as a 4-byte sequence, 21 | * most significant byte first. 22 | *

23 | * Prefer long type to hold unsigned ints. 24 | * 25 | * @return ser32(i) 26 | */ 27 | public static byte[] ser32(long i) { 28 | 29 | byte[] ser = new byte[4]; 30 | ser[0] = (byte) (i >> 24); 31 | ser[1] = (byte) (i >> 16); 32 | ser[2] = (byte) (i >> 8); 33 | ser[3] = (byte) (i); 34 | return ser; 35 | } 36 | 37 | /** 38 | * ser256(p): serializes the integer p as a 32-byte sequence, most 39 | * significant byte first. 40 | * 41 | * @param p big integer 42 | * @return 32 byte sequence 43 | */ 44 | public static byte[] ser256(BigInteger p) { 45 | byte[] byteArray = p.toByteArray(); 46 | byte[] ret = new byte[32]; 47 | 48 | //0 fill value 49 | Arrays.fill(ret, (byte) 0); 50 | 51 | //copy the bigint in 52 | if (byteArray.length <= ret.length) { 53 | System.arraycopy(byteArray, 0, ret, ret.length - byteArray.length, byteArray.length); 54 | } else { 55 | System.arraycopy(byteArray, byteArray.length - ret.length, ret, 0, ret.length); 56 | } 57 | 58 | return ret; 59 | } 60 | 61 | /** 62 | * ser256(p): serializes the integer p as a 32-byte sequence, least 63 | * significant byte first. 64 | * 65 | * @param p big integer 66 | * @return 32 byte sequence 67 | */ 68 | public static byte[] ser256LE(BigInteger p) { 69 | 70 | byte[] byteArray = p.toByteArray(); 71 | ArrayUtils.reverse(byteArray); 72 | 73 | byte[] ret = new byte[32]; 74 | 75 | //0 fill value 76 | Arrays.fill(ret, (byte) 0); 77 | 78 | //copy the bigint in 79 | if (byteArray.length <= ret.length) { 80 | System.arraycopy(byteArray, 0, ret, ret.length - byteArray.length, byteArray.length); 81 | } else { 82 | System.arraycopy(byteArray, byteArray.length - ret.length, ret, 0, ret.length); 83 | } 84 | 85 | return ret; 86 | } 87 | 88 | /** 89 | * parse256(p): interprets a 32-byte sequence as a 256-bit number, most 90 | * significant byte first. 91 | * 92 | * @param p bytes 93 | * @return 256 bit number 94 | */ 95 | public static BigInteger parse256(byte[] p) { 96 | return new BigInteger(1, p); 97 | } 98 | 99 | /** 100 | * parse256LE(p): interprets a 32-byte sequence as a 256-bit number, least 101 | * significant byte first 102 | * 103 | * @param p bytes 104 | * @return 256 bit number 105 | */ 106 | public static BigInteger parse256LE(byte[] p) { 107 | byte[] copy = ArrayUtils.clone(p); 108 | ArrayUtils.reverse(copy); 109 | 110 | return new BigInteger(1, copy); 111 | } 112 | 113 | /** 114 | * Append two byte arrays 115 | * 116 | * @param a first byte array 117 | * @param b second byte array 118 | * @return bytes appended 119 | */ 120 | public static byte[] append(byte[] a, byte[] b) { 121 | byte[] c = new byte[a.length + b.length]; 122 | System.arraycopy(a, 0, c, 0, a.length); 123 | System.arraycopy(b, 0, c, a.length, b.length); 124 | return c; 125 | } 126 | 127 | /** 128 | * Get the fingerprint 129 | * 130 | * @param keyData key data 131 | * @return fingerprint 132 | */ 133 | public static byte[] getFingerprint(byte[] keyData) { 134 | byte[] point = Secp256k1.serP(Secp256k1.point(HdUtil.parse256(keyData))); 135 | byte[] h160 = Hash.h160(point); 136 | return new byte[]{h160[0], h160[1], h160[2], h160[3]}; 137 | } 138 | 139 | public static byte[] ser32LE(long i) { 140 | byte[] ser = new byte[4]; 141 | ser[3] = (byte) (i >> 24); 142 | ser[2] = (byte) (i >> 16); 143 | ser[1] = (byte) (i >> 8); 144 | ser[0] = (byte) (i); 145 | return ser; 146 | } 147 | } 148 | 149 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/crypto/HmacSha512.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.crypto; 8 | 9 | import com.github.orogvany.bip32.exception.CryptoException; 10 | 11 | import javax.crypto.Mac; 12 | import javax.crypto.spec.SecretKeySpec; 13 | import java.security.InvalidKeyException; 14 | import java.security.NoSuchAlgorithmException; 15 | 16 | /** 17 | * Utility class for Hmac SHA-512 18 | */ 19 | public class HmacSha512 { 20 | 21 | private static final String HMAC_SHA512 = "HmacSHA512"; 22 | 23 | /** 24 | * hmac512 25 | * 26 | * @param key key 27 | * @param seed seed 28 | * @return hmac512 29 | */ 30 | public static byte[] hmac512(byte[] key, byte[] seed) { 31 | try { 32 | Mac sha512_HMAC = Mac.getInstance(HMAC_SHA512); 33 | SecretKeySpec keySpec = new SecretKeySpec(seed, HMAC_SHA512); 34 | sha512_HMAC.init(keySpec); 35 | return sha512_HMAC.doFinal(key); 36 | } catch (NoSuchAlgorithmException | InvalidKeyException e) { 37 | throw new CryptoException("Unable to perform hmac512.", e); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/crypto/Secp256k1.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.crypto; 8 | 9 | import org.bouncycastle.asn1.x9.X9ECParameters; 10 | import org.bouncycastle.crypto.ec.CustomNamedCurves; 11 | import org.bouncycastle.math.ec.ECPoint; 12 | 13 | import java.math.BigInteger; 14 | 15 | public class Secp256k1 { 16 | static final X9ECParameters SECP = CustomNamedCurves.getByName("secp256k1"); 17 | 18 | /** 19 | * serP(P): serializes the coordinate pair P = (x,y) as a byte sequence using 20 | * SEC1's compressed form: (0x02 or 0x03) || ser256(x), where the header byte 21 | * depends on the parity of the omitted y coordinate. 22 | * 23 | * @param p point 24 | * @return serialized point 25 | */ 26 | public static byte[] serP(ECPoint p) { 27 | return p.getEncoded(true); 28 | } 29 | 30 | public static ECPoint deserP(byte[] p) 31 | { 32 | return SECP.getCurve().decodePoint(p); 33 | } 34 | /** 35 | * point(p): returns the coordinate pair resulting from EC point multiplication 36 | * (repeated application of the EC group operation) of the secp256k1 base point 37 | * with the integer p. 38 | * 39 | * @param p input 40 | * @return point 41 | */ 42 | public static ECPoint point(BigInteger p) { 43 | return SECP.getG().multiply(p); 44 | } 45 | 46 | /** 47 | * get curve N 48 | * 49 | * @return N 50 | */ 51 | public static BigInteger getN() { 52 | return SECP.getN(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/exception/CryptoException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.exception; 8 | 9 | /** 10 | * General exception for crypto operations 11 | */ 12 | public class CryptoException extends RuntimeException { 13 | 14 | public CryptoException(String message) { 15 | super(message); 16 | } 17 | 18 | public CryptoException(String message, Throwable cause) { 19 | super(message, cause); 20 | } 21 | 22 | public CryptoException(Throwable cause) { 23 | super(cause); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/extern/Hex.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-2018 The Semux Developers 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.extern; 8 | 9 | import com.github.orogvany.bip32.exception.CryptoException; 10 | 11 | /** 12 | * Hex utility 13 | */ 14 | public class Hex { 15 | 16 | public static final String PREF = "0x"; 17 | 18 | private static final char[] intToHex = "0123456789abcdef".toCharArray(); 19 | private static final int[] hexToInt = new int[128]; 20 | static { 21 | for (byte i = 0; i < 16; i++) { 22 | if (i < 10) { 23 | hexToInt['0' + i] = i; 24 | } else { 25 | hexToInt['a' + i - 10] = i; 26 | hexToInt['A' + i - 10] = i; 27 | } 28 | } 29 | } 30 | 31 | private Hex() { 32 | } 33 | 34 | /** 35 | * Encodes a byte array into a hex string. 36 | * 37 | * @param raw 38 | * @return 39 | */ 40 | public static String encode(byte[] raw) { 41 | char[] hex = new char[raw.length * 2]; 42 | 43 | for (int i = 0; i < raw.length; i++) { 44 | hex[i * 2] = intToHex[(raw[i] & 0xF0) >> 4]; 45 | hex[i * 2 + 1] = intToHex[raw[i] & 0x0F]; 46 | } 47 | 48 | return new String(hex); 49 | } 50 | 51 | /** 52 | * Encodes a byte array into hex string. 53 | * 54 | * @param raw 55 | * @return the hex encoding with 0x prefix 56 | */ 57 | public static String encode0x(byte[] raw) { 58 | return Hex.PREF + encode(raw); 59 | } 60 | 61 | /** 62 | * Decode a hex encoded byte array. 63 | * 64 | * @param hex 65 | * @throws CryptoException 66 | * if the input is not a valid hex string 67 | * @return 68 | */ 69 | public static byte[] decode(String hex) throws CryptoException { 70 | if (hex == null || !hex.matches("([0-9a-fA-F]{2})*")) { 71 | throw new CryptoException("Invalid hex string"); 72 | } 73 | 74 | byte[] raw = new byte[hex.length() / 2]; 75 | 76 | char[] chars = hex.toCharArray(); 77 | for (int i = 0; i < chars.length; i += 2) { 78 | raw[i / 2] = (byte) ((hexToInt[chars[i]] << 4) + hexToInt[chars[i + 1]]); 79 | } 80 | 81 | return raw; 82 | } 83 | 84 | /** 85 | * Decodes a hex encoded byte array. 86 | *

87 | * This method will automatically detect the '0x' prefix. 88 | * 89 | * @param hex 90 | * @throws CryptoException 91 | * if the input is not a valid hex string 92 | * @return 93 | */ 94 | public static byte[] decode0x(String hex) throws CryptoException { 95 | if (hex != null && hex.startsWith(Hex.PREF)) { 96 | return decode(hex.substring(2)); 97 | } else { 98 | return decode(hex); 99 | } 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/Bip44.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet; 8 | 9 | import com.github.orogvany.bip32.Network; 10 | 11 | import java.io.UnsupportedEncodingException; 12 | 13 | /** 14 | * Utility class for BIP-44 paths 15 | */ 16 | public class Bip44 { 17 | private HdKeyGenerator hdKeyGenerator = new HdKeyGenerator(); 18 | // purpose is hardcoded to 44' 19 | private static final int PURPOSE = 44; 20 | // we support just one user account 21 | private static final long ACCOUNT = 0; 22 | // we support just external addresses, 0 is 'external' 23 | private static final int CHANGE = 0; 24 | 25 | /** 26 | * Get a root account address for a given seed 27 | * 28 | * @param seed seed 29 | * @param network network 30 | * @param coinType coinType 31 | * @return 32 | */ 33 | public HdAddress getRootAddressFromSeed(byte[] seed, Network network, CoinType coinType) { 34 | HdAddress masterAddress = hdKeyGenerator.getAddressFromSeed(seed, network, coinType); 35 | HdAddress purposeAddress = hdKeyGenerator.getAddress(masterAddress, PURPOSE, true); 36 | HdAddress coinTypeAddress = hdKeyGenerator.getAddress(purposeAddress, coinType.getCoinType(), true); 37 | HdAddress accountAddress = hdKeyGenerator.getAddress(coinTypeAddress, ACCOUNT, true); 38 | HdAddress changeAddress = hdKeyGenerator.getAddress(accountAddress, CHANGE, coinType.getAlwaysHardened()); 39 | 40 | return changeAddress; 41 | } 42 | 43 | public HdAddress getAddress(HdAddress address, int index) { 44 | return hdKeyGenerator.getAddress(address, index, address.getCoinType().getAlwaysHardened()); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/CoinType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet; 8 | 9 | import com.github.orogvany.bip32.wallet.key.Curve; 10 | 11 | public enum CoinType { 12 | bitcoin(Curve.bitcoin, 0, false), 13 | semux(Curve.ed25519, 7562605, true); 14 | 15 | private final Curve curve; 16 | private final long coinType; 17 | private boolean alwaysHardened; 18 | 19 | CoinType(Curve curve, long coinType, boolean alwaysHardened) { 20 | 21 | this.curve = curve; 22 | this.coinType = coinType; 23 | this.alwaysHardened = alwaysHardened; 24 | } 25 | 26 | /** 27 | * Get the curve 28 | * 29 | * @return curve 30 | */ 31 | public Curve getCurve() { 32 | return curve; 33 | } 34 | 35 | /** 36 | * get the coin type 37 | * 38 | * @return coin type 39 | */ 40 | public long getCoinType() { 41 | return coinType; 42 | } 43 | 44 | /** 45 | * get whether the addresses must always be hardened 46 | * 47 | * @return always hardened 48 | */ 49 | public boolean getAlwaysHardened() { 50 | return alwaysHardened; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/HdAddress.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet; 8 | 9 | import com.github.orogvany.bip32.wallet.key.HdPrivateKey; 10 | import com.github.orogvany.bip32.wallet.key.HdPublicKey; 11 | 12 | /** 13 | * An HD pub/private key 14 | */ 15 | public class HdAddress { 16 | 17 | private final HdPrivateKey privateKey; 18 | private final HdPublicKey publicKey; 19 | private final CoinType coinType; 20 | private final String path; 21 | 22 | public HdAddress(HdPrivateKey privateKey, HdPublicKey publicKey, CoinType coinType, String path) { 23 | this.privateKey = privateKey; 24 | this.publicKey = publicKey; 25 | this.coinType = coinType; 26 | this.path = path; 27 | } 28 | 29 | public HdPrivateKey getPrivateKey() { 30 | return privateKey; 31 | } 32 | 33 | public HdPublicKey getPublicKey() { 34 | return publicKey; 35 | } 36 | 37 | public CoinType getCoinType() { 38 | return coinType; 39 | } 40 | 41 | public String getPath() { 42 | return path; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/HdKeyGenerator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet; 8 | 9 | import com.github.orogvany.bip32.Network; 10 | import com.github.orogvany.bip32.crypto.Hash; 11 | import com.github.orogvany.bip32.crypto.HdUtil; 12 | import com.github.orogvany.bip32.crypto.HmacSha512; 13 | import com.github.orogvany.bip32.crypto.Secp256k1; 14 | import com.github.orogvany.bip32.exception.CryptoException; 15 | import com.github.orogvany.bip32.wallet.key.Curve; 16 | import com.github.orogvany.bip32.wallet.key.HdPrivateKey; 17 | import com.github.orogvany.bip32.wallet.key.HdPublicKey; 18 | import net.i2p.crypto.eddsa.EdDSAPrivateKey; 19 | import net.i2p.crypto.eddsa.EdDSAPublicKey; 20 | import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; 21 | import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec; 22 | import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec; 23 | import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec; 24 | import org.bouncycastle.math.ec.ECPoint; 25 | 26 | import java.io.UnsupportedEncodingException; 27 | import java.math.BigInteger; 28 | import java.util.Arrays; 29 | 30 | public class HdKeyGenerator { 31 | 32 | private static final EdDSAParameterSpec ED25519SPEC = EdDSANamedCurveTable.getByName("ed25519"); 33 | public static final String MASTER_PATH = "m"; 34 | 35 | public HdAddress getAddressFromSeed(byte[] seed, Network network, CoinType coinType) { 36 | 37 | Curve curve = coinType.getCurve(); 38 | HdPublicKey publicKey = new HdPublicKey(); 39 | HdPrivateKey privateKey = new HdPrivateKey(); 40 | HdAddress address = new HdAddress(privateKey, publicKey, coinType, MASTER_PATH); 41 | 42 | byte[] I; 43 | try { 44 | I = HmacSha512.hmac512(seed, curve.getSeed().getBytes("UTF-8")); 45 | } catch (UnsupportedEncodingException e) { 46 | throw new CryptoException("Unable to decode seed."); 47 | } 48 | 49 | //split into left/right 50 | byte[] IL = Arrays.copyOfRange(I, 0, 32); 51 | byte[] IR = Arrays.copyOfRange(I, 32, 64); 52 | 53 | BigInteger masterSecretKey = HdUtil.parse256(IL); 54 | 55 | //In case IL is 0 or >=n, the master key is invalid. 56 | if (curve != Curve.ed25519 && masterSecretKey.compareTo(BigInteger.ZERO) == 0 || masterSecretKey.compareTo(Secp256k1.getN()) > 0) { 57 | throw new CryptoException("The master key is invalid"); 58 | } 59 | 60 | privateKey.setVersion(network.getPrivateKeyVersion()); 61 | privateKey.setDepth(0); 62 | privateKey.setFingerprint(new byte[]{0, 0, 0, 0}); 63 | privateKey.setChildNumber(new byte[]{0, 0, 0, 0}); 64 | privateKey.setChainCode(IR); 65 | privateKey.setKeyData(HdUtil.append(new byte[]{0}, IL)); 66 | 67 | ECPoint point = Secp256k1.point(masterSecretKey); 68 | 69 | publicKey.setVersion(network.getPublicKeyVersion()); 70 | publicKey.setDepth(0); 71 | publicKey.setFingerprint(new byte[]{0, 0, 0, 0}); 72 | publicKey.setChildNumber(new byte[]{0, 0, 0, 0}); 73 | publicKey.setChainCode(IR); 74 | publicKey.setKeyData(Secp256k1.serP(point)); 75 | 76 | switch (curve) { 77 | case bitcoin: 78 | privateKey.setPrivateKey(privateKey.getKeyData()); 79 | publicKey.setPublicKey(publicKey.getKeyData()); 80 | break; 81 | case ed25519: 82 | privateKey.setPrivateKey(IL); 83 | EdDSAPrivateKey sk = new EdDSAPrivateKey(new EdDSAPrivateKeySpec(IL, ED25519SPEC)); 84 | EdDSAPublicKey pk = new EdDSAPublicKey(new EdDSAPublicKeySpec(sk.getA(), sk.getParams())); 85 | publicKey.setPublicKey(HdUtil.append(new byte[]{0}, pk.getAbyte())); 86 | break; 87 | } 88 | 89 | return address; 90 | } 91 | 92 | public HdPublicKey getPublicKey(HdPublicKey parent, long child, boolean isHardened, Curve curve) { 93 | if (isHardened) { 94 | throw new CryptoException("Cannot derive child public keys from hardened keys"); 95 | } 96 | 97 | if (curve == Curve.ed25519) { 98 | throw new UnsupportedOperationException("Unable to derive ed25519 public key chaining"); 99 | } 100 | 101 | byte[] key = parent.getKeyData(); 102 | byte[] data = HdUtil.append(key, HdUtil.ser32(child)); 103 | //I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar)) || ser32(i)) 104 | byte[] I = HmacSha512.hmac512(data, parent.getChainCode()); 105 | 106 | byte[] IL = Arrays.copyOfRange(I, 0, 32); 107 | byte[] IR = Arrays.copyOfRange(I, 32, 64); 108 | 109 | HdPublicKey publicKey = new HdPublicKey(); 110 | 111 | publicKey.setVersion(parent.getVersion()); 112 | publicKey.setDepth(parent.getDepth() + 1); 113 | 114 | byte[] pKd = parent.getKeyData(); 115 | byte[] h160 = Hash.h160(pKd); 116 | byte[] childFingerprint = new byte[]{h160[0], h160[1], h160[2], h160[3]}; 117 | 118 | BigInteger ILBigInt = HdUtil.parse256(IL); 119 | ECPoint point = Secp256k1.point(ILBigInt); 120 | point = point.add(Secp256k1.deserP(parent.getKeyData())); 121 | 122 | if (ILBigInt.compareTo(Secp256k1.getN()) > 0 || point.isInfinity()) { 123 | throw new CryptoException("This key is invalid, should proceed to next key"); 124 | // return getPublicKey(parent, child+1, isHardened); 125 | } 126 | 127 | byte[] childKey = Secp256k1.serP(point); 128 | 129 | publicKey.setFingerprint(childFingerprint); 130 | publicKey.setChildNumber(HdUtil.ser32(child)); 131 | publicKey.setChainCode(IR); 132 | publicKey.setKeyData(childKey); 133 | 134 | return publicKey; 135 | } 136 | 137 | public HdAddress getAddress(HdAddress parent, long child, boolean isHardened) { 138 | HdPrivateKey privateKey = new HdPrivateKey(); 139 | HdPublicKey publicKey = new HdPublicKey(); 140 | HdAddress address = new HdAddress(privateKey, publicKey, parent.getCoinType(), 141 | getPath(parent.getPath(), child, isHardened)); 142 | 143 | if (isHardened) { 144 | child += 0x80000000; 145 | } else if (parent.getCoinType().getCurve() == Curve.ed25519) { 146 | throw new CryptoException("ed25519 only supports hardened keys"); 147 | } 148 | 149 | byte[] xChain = parent.getPrivateKey().getChainCode(); 150 | ///backwards hmac order in method? 151 | byte[] I; 152 | if (isHardened) { 153 | //If so (hardened child): let I = HMAC-SHA512(Key = cpar, Data = 0x00 || ser256(kpar) || ser32(i)). (Note: The 0x00 pads the private key to make it 33 bytes long.) 154 | BigInteger kpar = HdUtil.parse256(parent.getPrivateKey().getKeyData()); 155 | byte[] data = HdUtil.append(new byte[]{0}, HdUtil.ser256(kpar)); 156 | data = HdUtil.append(data, HdUtil.ser32(child)); 157 | I = HmacSha512.hmac512(data, xChain); 158 | } else { 159 | //I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar)) || ser32(i)) 160 | //just use public key 161 | byte[] key = parent.getPublicKey().getKeyData(); 162 | byte[] xPubKey = HdUtil.append(key, HdUtil.ser32(child)); 163 | I = HmacSha512.hmac512(xPubKey, xChain); 164 | } 165 | 166 | //split into left/right 167 | byte[] IL = Arrays.copyOfRange(I, 0, 32); 168 | byte[] IR = Arrays.copyOfRange(I, 32, 64); 169 | //The returned child key ki is parse256(IL) + kpar (mod n). 170 | BigInteger parse256 = HdUtil.parse256(IL); 171 | BigInteger kpar = HdUtil.parse256(parent.getPrivateKey().getKeyData()); 172 | BigInteger childSecretKey = parse256.add(kpar).mod(Secp256k1.getN()); 173 | 174 | byte[] childNumber = HdUtil.ser32(child); 175 | byte[] fingerprint = HdUtil.getFingerprint(parent.getPrivateKey().getKeyData()); 176 | 177 | privateKey.setVersion(parent.getPrivateKey().getVersion()); 178 | privateKey.setDepth(parent.getPrivateKey().getDepth() + 1); 179 | privateKey.setFingerprint(fingerprint); 180 | privateKey.setChildNumber(childNumber); 181 | privateKey.setChainCode(IR); 182 | privateKey.setKeyData(HdUtil.append(new byte[]{0}, HdUtil.ser256(childSecretKey))); 183 | 184 | ECPoint point = Secp256k1.point(childSecretKey); 185 | 186 | publicKey.setVersion(parent.getPublicKey().getVersion()); 187 | publicKey.setDepth(parent.getPublicKey().getDepth() + 1); 188 | 189 | // can just use fingerprint, but let's use data from parent public key 190 | byte[] pKd = parent.getPublicKey().getKeyData(); 191 | byte[] h160 = Hash.h160(pKd); 192 | byte[] childFingerprint = new byte[]{h160[0], h160[1], h160[2], h160[3]}; 193 | 194 | publicKey.setFingerprint(childFingerprint); 195 | publicKey.setChildNumber(childNumber); 196 | publicKey.setChainCode(IR); 197 | publicKey.setKeyData(Secp256k1.serP(point)); 198 | 199 | switch (parent.getCoinType().getCurve()) { 200 | case bitcoin: 201 | privateKey.setPrivateKey(privateKey.getKeyData()); 202 | publicKey.setPublicKey(publicKey.getKeyData()); 203 | break; 204 | case ed25519: 205 | privateKey.setPrivateKey(IL); 206 | h160 = Hash.h160(parent.getPublicKey().getPublicKey()); 207 | childFingerprint = new byte[]{h160[0], h160[1], h160[2], h160[3]}; 208 | publicKey.setFingerprint(childFingerprint); 209 | privateKey.setFingerprint(childFingerprint); 210 | privateKey.setKeyData(HdUtil.append(new byte[]{0}, IL)); 211 | 212 | EdDSAPrivateKey sk = new EdDSAPrivateKey(new EdDSAPrivateKeySpec(IL, ED25519SPEC)); 213 | EdDSAPublicKey pk = new EdDSAPublicKey(new EdDSAPublicKeySpec(sk.getA(), sk.getParams())); 214 | publicKey.setPublicKey(HdUtil.append(new byte[]{0}, pk.getAbyte())); 215 | break; 216 | } 217 | 218 | return address; 219 | } 220 | 221 | private String getPath(String parentPath, long child, boolean isHardened) { 222 | if(parentPath == null) 223 | { 224 | parentPath = MASTER_PATH; 225 | } 226 | return parentPath + "/" + child + (isHardened ? "'":""); 227 | } 228 | } 229 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/key/Curve.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet.key; 8 | 9 | public enum Curve { 10 | bitcoin("Bitcoin seed"), 11 | ed25519("ed25519 seed"); 12 | 13 | private final String seed; 14 | 15 | Curve(String seed) { 16 | this.seed = seed; 17 | } 18 | 19 | public String getSeed() { 20 | return seed; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/key/HdKey.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet.key; 8 | 9 | import com.github.orogvany.bip32.crypto.Hash; 10 | import com.github.orogvany.bip32.exception.CryptoException; 11 | 12 | import java.io.ByteArrayOutputStream; 13 | import java.io.IOException; 14 | import java.util.Arrays; 15 | 16 | /** 17 | * Marshalling code for HDKeys to base58 representations. 18 | *

19 | * Will probably be migrated to builder pattern. 20 | */ 21 | public class HdKey { 22 | private byte[] version; 23 | private int depth; 24 | private byte[] fingerprint; 25 | private byte[] childNumber; 26 | private byte[] chainCode; 27 | private byte[] keyData; 28 | 29 | HdKey(byte[] version, int depth, byte[] fingerprint, byte[] childNumber, byte[] chainCode, byte[] keyData) { 30 | this.version = version; 31 | this.depth = depth; 32 | this.fingerprint = fingerprint; 33 | this.childNumber = childNumber; 34 | this.chainCode = chainCode; 35 | this.keyData = keyData; 36 | } 37 | 38 | HdKey() { 39 | } 40 | 41 | public void setVersion(byte[] version) { 42 | this.version = version; 43 | } 44 | 45 | public void setDepth(int depth) { 46 | this.depth = depth; 47 | } 48 | 49 | public void setFingerprint(byte[] fingerprint) { 50 | this.fingerprint = fingerprint; 51 | } 52 | 53 | public void setChildNumber(byte[] childNumber) { 54 | this.childNumber = childNumber; 55 | } 56 | 57 | public void setChainCode(byte[] chainCode) { 58 | this.chainCode = chainCode; 59 | } 60 | 61 | public void setKeyData(byte[] keyData) { 62 | this.keyData = keyData; 63 | } 64 | 65 | public byte[] getChainCode() { 66 | return chainCode; 67 | } 68 | 69 | /** 70 | * Get the full chain key. This is not the public/private key for the address. 71 | * @return full HD Key 72 | */ 73 | public byte[] getKey() { 74 | 75 | ByteArrayOutputStream key = new ByteArrayOutputStream(); 76 | 77 | try { 78 | key.write(version); 79 | key.write(new byte[]{(byte) depth}); 80 | key.write(fingerprint); 81 | key.write(childNumber); 82 | key.write(chainCode); 83 | key.write(keyData); 84 | byte[] checksum = Hash.sha256Twice(key.toByteArray()); 85 | key.write(Arrays.copyOfRange(checksum, 0, 4)); 86 | } catch (IOException e) { 87 | throw new CryptoException("Unable to write key"); 88 | } 89 | 90 | return key.toByteArray(); 91 | } 92 | 93 | public int getDepth() { 94 | return depth; 95 | } 96 | 97 | public byte[] getKeyData() { 98 | return keyData; 99 | } 100 | 101 | public byte[] getVersion() { 102 | return version; 103 | } 104 | 105 | public byte[] getFingerprint() { 106 | return fingerprint; 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/key/HdPrivateKey.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet.key; 8 | 9 | /** 10 | * Defines a key with a given private key 11 | */ 12 | public class HdPrivateKey extends HdKey { 13 | private byte[] privateKey; 14 | 15 | public byte[] getPrivateKey() { 16 | return privateKey; 17 | } 18 | 19 | public void setPrivateKey(byte[] privateKey) { 20 | this.privateKey = privateKey; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip32/wallet/key/HdPublicKey.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32.wallet.key; 8 | 9 | /** 10 | * Defines a key with a given public key 11 | */ 12 | public class HdPublicKey extends HdKey { 13 | private byte[] publicKey; 14 | 15 | public byte[] getPublicKey() { 16 | return publicKey; 17 | } 18 | 19 | public void setPublicKey(byte[] publicKey) { 20 | this.publicKey = publicKey; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip39/Dictionary.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.io.InputStreamReader; 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class Dictionary { 11 | 12 | private List words = new ArrayList<>(); 13 | 14 | public Dictionary(Language language) throws IOException { 15 | 16 | InputStream wordStream = this.getClass().getClassLoader().getResourceAsStream("wordlists/" + language.name() + ".txt"); 17 | 18 | BufferedReader reader = new BufferedReader(new InputStreamReader(wordStream)); 19 | String word; 20 | 21 | while ((word = reader.readLine()) != null) { 22 | words.add(word); 23 | } 24 | } 25 | 26 | public String getWord(int wordIdx) { 27 | return words.get(wordIdx); 28 | } 29 | 30 | public int indexOf(String word) { 31 | return words.indexOf(word); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip39/Language.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | public enum Language { 4 | english, 5 | french, 6 | italian, 7 | japanese, 8 | korean, 9 | spanish 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/github/orogvany/bip39/MnemonicGenerator.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | import com.github.orogvany.bip32.crypto.BitUtil; 4 | import com.github.orogvany.bip32.crypto.Hash; 5 | 6 | import javax.crypto.SecretKey; 7 | import javax.crypto.SecretKeyFactory; 8 | import javax.crypto.spec.PBEKeySpec; 9 | import java.io.IOException; 10 | import java.nio.charset.Charset; 11 | import java.security.NoSuchAlgorithmException; 12 | import java.security.SecureRandom; 13 | import java.security.spec.InvalidKeySpecException; 14 | import java.util.BitSet; 15 | 16 | /** 17 | * Generate and Process Mnemonic codes 18 | */ 19 | public class MnemonicGenerator { 20 | 21 | public static final String SPACE_JP = "\u3000"; 22 | 23 | private SecureRandom secureRandom = new SecureRandom(); 24 | 25 | public byte[] getSeedFromWordlist(String words, String password, Language language) { 26 | 27 | Dictionary dictionary; 28 | try { 29 | dictionary = new Dictionary(language); 30 | } catch (IOException e) { 31 | throw new IllegalArgumentException("Unknown dictionary"); 32 | } 33 | 34 | if (password == null) { 35 | password = ""; 36 | } 37 | 38 | //validate that things look alright 39 | String[] wordsList = words.split(" "); 40 | if (wordsList.length < 12) { 41 | throw new IllegalArgumentException("Must be at least 12 words"); 42 | } 43 | if (wordsList.length > 24) { 44 | throw new IllegalArgumentException("Must be less than 24 words"); 45 | } 46 | 47 | //check all the words are found 48 | for(String word : wordsList) { 49 | if(dictionary.indexOf(word.trim()) < 0) 50 | { 51 | throw new IllegalArgumentException("Unknown word: " + word); 52 | 53 | } 54 | } 55 | 56 | //check the checksum 57 | 58 | 59 | 60 | String salt = "mnemonic" + password; 61 | return pbkdf2HmacSha512(words.trim().toCharArray(), salt.getBytes(Charset.forName("UTF-8")), 2048, 512); 62 | } 63 | 64 | private byte[] pbkdf2HmacSha512(final char[] password, final byte[] salt, final int iterations, 65 | final int keyLength) { 66 | 67 | try { 68 | SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512"); 69 | PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, keyLength); 70 | SecretKey key = skf.generateSecret(spec); 71 | byte[] res = key.getEncoded(); 72 | return res; 73 | 74 | } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { 75 | throw new RuntimeException(e); 76 | } 77 | } 78 | 79 | public String getWordlist(int entropyLength, Language language) { 80 | byte[] entropy = secureRandom.generateSeed(entropyLength / 8); 81 | return getWordlist(entropy, language); 82 | } 83 | 84 | public String getWordlist(byte[] entropy, Language language) { 85 | 86 | int entropyLength = entropy.length * 8; 87 | Dictionary dictionary; 88 | try { 89 | dictionary = new Dictionary(language); 90 | } catch (IOException e) { 91 | throw new IllegalArgumentException("Unknown dictionary"); 92 | } 93 | if (entropyLength < 128) { 94 | throw new IllegalArgumentException("Entropy must be over 128"); 95 | } 96 | if (entropyLength > 256) { 97 | throw new IllegalArgumentException("Entropy must be less than 256"); 98 | } 99 | if (entropyLength % 32 != 0) { 100 | throw new IllegalArgumentException("Entropy must be a multiple of 32"); 101 | } 102 | int checksumLength = entropyLength / 32; 103 | byte[] hash = Hash.sha256(entropy); 104 | 105 | BitSet hashBitset = createBitset(hash); 106 | BitSet bitSet = createBitset(entropy); 107 | 108 | BitSet checksum = hashBitset.get(0, checksumLength); 109 | bitSet = append(checksum, bitSet, entropyLength); 110 | 111 | StringBuilder ret = new StringBuilder(); 112 | 113 | int numWords = (entropyLength + checksumLength) / 11; 114 | for (int i = 0; i < numWords; i++) { 115 | BitSet range = bitSet.get(i * 11, (i + 1) * 11); 116 | int wordIdx = 0; 117 | if (!range.isEmpty()) { 118 | wordIdx = getInt(range); 119 | } 120 | String word = dictionary.getWord(wordIdx); 121 | if (i > 0) { 122 | ret.append(" "); 123 | } 124 | ret.append(word); 125 | 126 | } 127 | 128 | return ret.toString(); 129 | } 130 | 131 | /** 132 | * For some reason Bitset.valueOf() does not return correct data we 133 | * expect. 134 | * 135 | * @param bytes 136 | * @return 137 | */ 138 | private BitSet createBitset(byte[] bytes) { 139 | BitSet ret = new BitSet(); 140 | int offset = 0; 141 | for (byte b : bytes) { 142 | for (int i = 1; i < 9; i++) { 143 | if (BitUtil.checkBit(b, i)) { 144 | ret.set(offset); 145 | } 146 | offset++; 147 | } 148 | } 149 | return ret; 150 | } 151 | 152 | /** 153 | * get a printable version of a bitset 154 | * 155 | * @param bitset 156 | * @param length 157 | * @return 158 | */ 159 | private String getBitString(BitSet bitset, int length) { 160 | StringBuilder ret = new StringBuilder(); 161 | for (int i = 0; i < length; i++) { 162 | ret.append(bitset.get(i) ? "1" : "0"); 163 | } 164 | return ret.toString(); 165 | } 166 | 167 | private int getInt(BitSet range) { 168 | 169 | int ret = 0; 170 | for (int i = 0; i < 11; i++) { 171 | 172 | ret = ret << 1; 173 | if (range.get(i)) { 174 | ret |= 1; 175 | } 176 | } 177 | return ret; 178 | } 179 | 180 | private BitSet append(BitSet a, BitSet b, int bLength) { 181 | 182 | //shift A << bLenght 183 | BitSet ret = shift(a, bLength); 184 | ret.or(b); 185 | return ret; 186 | } 187 | 188 | private BitSet shift(BitSet bitSet, int length) { 189 | BitSet ret = new BitSet(bitSet.length() + length); 190 | for (int i = 0; i < bitSet.length(); i++) { 191 | if (bitSet.get(i)) { 192 | ret.set(i + length); 193 | } 194 | } 195 | return ret; 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /src/main/resources/wordlists/english.txt: -------------------------------------------------------------------------------- 1 | abandon 2 | ability 3 | able 4 | about 5 | above 6 | absent 7 | absorb 8 | abstract 9 | absurd 10 | abuse 11 | access 12 | accident 13 | account 14 | accuse 15 | achieve 16 | acid 17 | acoustic 18 | acquire 19 | across 20 | act 21 | action 22 | actor 23 | actress 24 | actual 25 | adapt 26 | add 27 | addict 28 | address 29 | adjust 30 | admit 31 | adult 32 | advance 33 | advice 34 | aerobic 35 | affair 36 | afford 37 | afraid 38 | again 39 | age 40 | agent 41 | agree 42 | ahead 43 | aim 44 | air 45 | airport 46 | aisle 47 | alarm 48 | album 49 | alcohol 50 | alert 51 | alien 52 | all 53 | alley 54 | allow 55 | almost 56 | alone 57 | alpha 58 | already 59 | also 60 | alter 61 | always 62 | amateur 63 | amazing 64 | among 65 | amount 66 | amused 67 | analyst 68 | anchor 69 | ancient 70 | anger 71 | angle 72 | angry 73 | animal 74 | ankle 75 | announce 76 | annual 77 | another 78 | answer 79 | antenna 80 | antique 81 | anxiety 82 | any 83 | apart 84 | apology 85 | appear 86 | apple 87 | approve 88 | april 89 | arch 90 | arctic 91 | area 92 | arena 93 | argue 94 | arm 95 | armed 96 | armor 97 | army 98 | around 99 | arrange 100 | arrest 101 | arrive 102 | arrow 103 | art 104 | artefact 105 | artist 106 | artwork 107 | ask 108 | aspect 109 | assault 110 | asset 111 | assist 112 | assume 113 | asthma 114 | athlete 115 | atom 116 | attack 117 | attend 118 | attitude 119 | attract 120 | auction 121 | audit 122 | august 123 | aunt 124 | author 125 | auto 126 | autumn 127 | average 128 | avocado 129 | avoid 130 | awake 131 | aware 132 | away 133 | awesome 134 | awful 135 | awkward 136 | axis 137 | baby 138 | bachelor 139 | bacon 140 | badge 141 | bag 142 | balance 143 | balcony 144 | ball 145 | bamboo 146 | banana 147 | banner 148 | bar 149 | barely 150 | bargain 151 | barrel 152 | base 153 | basic 154 | basket 155 | battle 156 | beach 157 | bean 158 | beauty 159 | because 160 | become 161 | beef 162 | before 163 | begin 164 | behave 165 | behind 166 | believe 167 | below 168 | belt 169 | bench 170 | benefit 171 | best 172 | betray 173 | better 174 | between 175 | beyond 176 | bicycle 177 | bid 178 | bike 179 | bind 180 | biology 181 | bird 182 | birth 183 | bitter 184 | black 185 | blade 186 | blame 187 | blanket 188 | blast 189 | bleak 190 | bless 191 | blind 192 | blood 193 | blossom 194 | blouse 195 | blue 196 | blur 197 | blush 198 | board 199 | boat 200 | body 201 | boil 202 | bomb 203 | bone 204 | bonus 205 | book 206 | boost 207 | border 208 | boring 209 | borrow 210 | boss 211 | bottom 212 | bounce 213 | box 214 | boy 215 | bracket 216 | brain 217 | brand 218 | brass 219 | brave 220 | bread 221 | breeze 222 | brick 223 | bridge 224 | brief 225 | bright 226 | bring 227 | brisk 228 | broccoli 229 | broken 230 | bronze 231 | broom 232 | brother 233 | brown 234 | brush 235 | bubble 236 | buddy 237 | budget 238 | buffalo 239 | build 240 | bulb 241 | bulk 242 | bullet 243 | bundle 244 | bunker 245 | burden 246 | burger 247 | burst 248 | bus 249 | business 250 | busy 251 | butter 252 | buyer 253 | buzz 254 | cabbage 255 | cabin 256 | cable 257 | cactus 258 | cage 259 | cake 260 | call 261 | calm 262 | camera 263 | camp 264 | can 265 | canal 266 | cancel 267 | candy 268 | cannon 269 | canoe 270 | canvas 271 | canyon 272 | capable 273 | capital 274 | captain 275 | car 276 | carbon 277 | card 278 | cargo 279 | carpet 280 | carry 281 | cart 282 | case 283 | cash 284 | casino 285 | castle 286 | casual 287 | cat 288 | catalog 289 | catch 290 | category 291 | cattle 292 | caught 293 | cause 294 | caution 295 | cave 296 | ceiling 297 | celery 298 | cement 299 | census 300 | century 301 | cereal 302 | certain 303 | chair 304 | chalk 305 | champion 306 | change 307 | chaos 308 | chapter 309 | charge 310 | chase 311 | chat 312 | cheap 313 | check 314 | cheese 315 | chef 316 | cherry 317 | chest 318 | chicken 319 | chief 320 | child 321 | chimney 322 | choice 323 | choose 324 | chronic 325 | chuckle 326 | chunk 327 | churn 328 | cigar 329 | cinnamon 330 | circle 331 | citizen 332 | city 333 | civil 334 | claim 335 | clap 336 | clarify 337 | claw 338 | clay 339 | clean 340 | clerk 341 | clever 342 | click 343 | client 344 | cliff 345 | climb 346 | clinic 347 | clip 348 | clock 349 | clog 350 | close 351 | cloth 352 | cloud 353 | clown 354 | club 355 | clump 356 | cluster 357 | clutch 358 | coach 359 | coast 360 | coconut 361 | code 362 | coffee 363 | coil 364 | coin 365 | collect 366 | color 367 | column 368 | combine 369 | come 370 | comfort 371 | comic 372 | common 373 | company 374 | concert 375 | conduct 376 | confirm 377 | congress 378 | connect 379 | consider 380 | control 381 | convince 382 | cook 383 | cool 384 | copper 385 | copy 386 | coral 387 | core 388 | corn 389 | correct 390 | cost 391 | cotton 392 | couch 393 | country 394 | couple 395 | course 396 | cousin 397 | cover 398 | coyote 399 | crack 400 | cradle 401 | craft 402 | cram 403 | crane 404 | crash 405 | crater 406 | crawl 407 | crazy 408 | cream 409 | credit 410 | creek 411 | crew 412 | cricket 413 | crime 414 | crisp 415 | critic 416 | crop 417 | cross 418 | crouch 419 | crowd 420 | crucial 421 | cruel 422 | cruise 423 | crumble 424 | crunch 425 | crush 426 | cry 427 | crystal 428 | cube 429 | culture 430 | cup 431 | cupboard 432 | curious 433 | current 434 | curtain 435 | curve 436 | cushion 437 | custom 438 | cute 439 | cycle 440 | dad 441 | damage 442 | damp 443 | dance 444 | danger 445 | daring 446 | dash 447 | daughter 448 | dawn 449 | day 450 | deal 451 | debate 452 | debris 453 | decade 454 | december 455 | decide 456 | decline 457 | decorate 458 | decrease 459 | deer 460 | defense 461 | define 462 | defy 463 | degree 464 | delay 465 | deliver 466 | demand 467 | demise 468 | denial 469 | dentist 470 | deny 471 | depart 472 | depend 473 | deposit 474 | depth 475 | deputy 476 | derive 477 | describe 478 | desert 479 | design 480 | desk 481 | despair 482 | destroy 483 | detail 484 | detect 485 | develop 486 | device 487 | devote 488 | diagram 489 | dial 490 | diamond 491 | diary 492 | dice 493 | diesel 494 | diet 495 | differ 496 | digital 497 | dignity 498 | dilemma 499 | dinner 500 | dinosaur 501 | direct 502 | dirt 503 | disagree 504 | discover 505 | disease 506 | dish 507 | dismiss 508 | disorder 509 | display 510 | distance 511 | divert 512 | divide 513 | divorce 514 | dizzy 515 | doctor 516 | document 517 | dog 518 | doll 519 | dolphin 520 | domain 521 | donate 522 | donkey 523 | donor 524 | door 525 | dose 526 | double 527 | dove 528 | draft 529 | dragon 530 | drama 531 | drastic 532 | draw 533 | dream 534 | dress 535 | drift 536 | drill 537 | drink 538 | drip 539 | drive 540 | drop 541 | drum 542 | dry 543 | duck 544 | dumb 545 | dune 546 | during 547 | dust 548 | dutch 549 | duty 550 | dwarf 551 | dynamic 552 | eager 553 | eagle 554 | early 555 | earn 556 | earth 557 | easily 558 | east 559 | easy 560 | echo 561 | ecology 562 | economy 563 | edge 564 | edit 565 | educate 566 | effort 567 | egg 568 | eight 569 | either 570 | elbow 571 | elder 572 | electric 573 | elegant 574 | element 575 | elephant 576 | elevator 577 | elite 578 | else 579 | embark 580 | embody 581 | embrace 582 | emerge 583 | emotion 584 | employ 585 | empower 586 | empty 587 | enable 588 | enact 589 | end 590 | endless 591 | endorse 592 | enemy 593 | energy 594 | enforce 595 | engage 596 | engine 597 | enhance 598 | enjoy 599 | enlist 600 | enough 601 | enrich 602 | enroll 603 | ensure 604 | enter 605 | entire 606 | entry 607 | envelope 608 | episode 609 | equal 610 | equip 611 | era 612 | erase 613 | erode 614 | erosion 615 | error 616 | erupt 617 | escape 618 | essay 619 | essence 620 | estate 621 | eternal 622 | ethics 623 | evidence 624 | evil 625 | evoke 626 | evolve 627 | exact 628 | example 629 | excess 630 | exchange 631 | excite 632 | exclude 633 | excuse 634 | execute 635 | exercise 636 | exhaust 637 | exhibit 638 | exile 639 | exist 640 | exit 641 | exotic 642 | expand 643 | expect 644 | expire 645 | explain 646 | expose 647 | express 648 | extend 649 | extra 650 | eye 651 | eyebrow 652 | fabric 653 | face 654 | faculty 655 | fade 656 | faint 657 | faith 658 | fall 659 | false 660 | fame 661 | family 662 | famous 663 | fan 664 | fancy 665 | fantasy 666 | farm 667 | fashion 668 | fat 669 | fatal 670 | father 671 | fatigue 672 | fault 673 | favorite 674 | feature 675 | february 676 | federal 677 | fee 678 | feed 679 | feel 680 | female 681 | fence 682 | festival 683 | fetch 684 | fever 685 | few 686 | fiber 687 | fiction 688 | field 689 | figure 690 | file 691 | film 692 | filter 693 | final 694 | find 695 | fine 696 | finger 697 | finish 698 | fire 699 | firm 700 | first 701 | fiscal 702 | fish 703 | fit 704 | fitness 705 | fix 706 | flag 707 | flame 708 | flash 709 | flat 710 | flavor 711 | flee 712 | flight 713 | flip 714 | float 715 | flock 716 | floor 717 | flower 718 | fluid 719 | flush 720 | fly 721 | foam 722 | focus 723 | fog 724 | foil 725 | fold 726 | follow 727 | food 728 | foot 729 | force 730 | forest 731 | forget 732 | fork 733 | fortune 734 | forum 735 | forward 736 | fossil 737 | foster 738 | found 739 | fox 740 | fragile 741 | frame 742 | frequent 743 | fresh 744 | friend 745 | fringe 746 | frog 747 | front 748 | frost 749 | frown 750 | frozen 751 | fruit 752 | fuel 753 | fun 754 | funny 755 | furnace 756 | fury 757 | future 758 | gadget 759 | gain 760 | galaxy 761 | gallery 762 | game 763 | gap 764 | garage 765 | garbage 766 | garden 767 | garlic 768 | garment 769 | gas 770 | gasp 771 | gate 772 | gather 773 | gauge 774 | gaze 775 | general 776 | genius 777 | genre 778 | gentle 779 | genuine 780 | gesture 781 | ghost 782 | giant 783 | gift 784 | giggle 785 | ginger 786 | giraffe 787 | girl 788 | give 789 | glad 790 | glance 791 | glare 792 | glass 793 | glide 794 | glimpse 795 | globe 796 | gloom 797 | glory 798 | glove 799 | glow 800 | glue 801 | goat 802 | goddess 803 | gold 804 | good 805 | goose 806 | gorilla 807 | gospel 808 | gossip 809 | govern 810 | gown 811 | grab 812 | grace 813 | grain 814 | grant 815 | grape 816 | grass 817 | gravity 818 | great 819 | green 820 | grid 821 | grief 822 | grit 823 | grocery 824 | group 825 | grow 826 | grunt 827 | guard 828 | guess 829 | guide 830 | guilt 831 | guitar 832 | gun 833 | gym 834 | habit 835 | hair 836 | half 837 | hammer 838 | hamster 839 | hand 840 | happy 841 | harbor 842 | hard 843 | harsh 844 | harvest 845 | hat 846 | have 847 | hawk 848 | hazard 849 | head 850 | health 851 | heart 852 | heavy 853 | hedgehog 854 | height 855 | hello 856 | helmet 857 | help 858 | hen 859 | hero 860 | hidden 861 | high 862 | hill 863 | hint 864 | hip 865 | hire 866 | history 867 | hobby 868 | hockey 869 | hold 870 | hole 871 | holiday 872 | hollow 873 | home 874 | honey 875 | hood 876 | hope 877 | horn 878 | horror 879 | horse 880 | hospital 881 | host 882 | hotel 883 | hour 884 | hover 885 | hub 886 | huge 887 | human 888 | humble 889 | humor 890 | hundred 891 | hungry 892 | hunt 893 | hurdle 894 | hurry 895 | hurt 896 | husband 897 | hybrid 898 | ice 899 | icon 900 | idea 901 | identify 902 | idle 903 | ignore 904 | ill 905 | illegal 906 | illness 907 | image 908 | imitate 909 | immense 910 | immune 911 | impact 912 | impose 913 | improve 914 | impulse 915 | inch 916 | include 917 | income 918 | increase 919 | index 920 | indicate 921 | indoor 922 | industry 923 | infant 924 | inflict 925 | inform 926 | inhale 927 | inherit 928 | initial 929 | inject 930 | injury 931 | inmate 932 | inner 933 | innocent 934 | input 935 | inquiry 936 | insane 937 | insect 938 | inside 939 | inspire 940 | install 941 | intact 942 | interest 943 | into 944 | invest 945 | invite 946 | involve 947 | iron 948 | island 949 | isolate 950 | issue 951 | item 952 | ivory 953 | jacket 954 | jaguar 955 | jar 956 | jazz 957 | jealous 958 | jeans 959 | jelly 960 | jewel 961 | job 962 | join 963 | joke 964 | journey 965 | joy 966 | judge 967 | juice 968 | jump 969 | jungle 970 | junior 971 | junk 972 | just 973 | kangaroo 974 | keen 975 | keep 976 | ketchup 977 | key 978 | kick 979 | kid 980 | kidney 981 | kind 982 | kingdom 983 | kiss 984 | kit 985 | kitchen 986 | kite 987 | kitten 988 | kiwi 989 | knee 990 | knife 991 | knock 992 | know 993 | lab 994 | label 995 | labor 996 | ladder 997 | lady 998 | lake 999 | lamp 1000 | language 1001 | laptop 1002 | large 1003 | later 1004 | latin 1005 | laugh 1006 | laundry 1007 | lava 1008 | law 1009 | lawn 1010 | lawsuit 1011 | layer 1012 | lazy 1013 | leader 1014 | leaf 1015 | learn 1016 | leave 1017 | lecture 1018 | left 1019 | leg 1020 | legal 1021 | legend 1022 | leisure 1023 | lemon 1024 | lend 1025 | length 1026 | lens 1027 | leopard 1028 | lesson 1029 | letter 1030 | level 1031 | liar 1032 | liberty 1033 | library 1034 | license 1035 | life 1036 | lift 1037 | light 1038 | like 1039 | limb 1040 | limit 1041 | link 1042 | lion 1043 | liquid 1044 | list 1045 | little 1046 | live 1047 | lizard 1048 | load 1049 | loan 1050 | lobster 1051 | local 1052 | lock 1053 | logic 1054 | lonely 1055 | long 1056 | loop 1057 | lottery 1058 | loud 1059 | lounge 1060 | love 1061 | loyal 1062 | lucky 1063 | luggage 1064 | lumber 1065 | lunar 1066 | lunch 1067 | luxury 1068 | lyrics 1069 | machine 1070 | mad 1071 | magic 1072 | magnet 1073 | maid 1074 | mail 1075 | main 1076 | major 1077 | make 1078 | mammal 1079 | man 1080 | manage 1081 | mandate 1082 | mango 1083 | mansion 1084 | manual 1085 | maple 1086 | marble 1087 | march 1088 | margin 1089 | marine 1090 | market 1091 | marriage 1092 | mask 1093 | mass 1094 | master 1095 | match 1096 | material 1097 | math 1098 | matrix 1099 | matter 1100 | maximum 1101 | maze 1102 | meadow 1103 | mean 1104 | measure 1105 | meat 1106 | mechanic 1107 | medal 1108 | media 1109 | melody 1110 | melt 1111 | member 1112 | memory 1113 | mention 1114 | menu 1115 | mercy 1116 | merge 1117 | merit 1118 | merry 1119 | mesh 1120 | message 1121 | metal 1122 | method 1123 | middle 1124 | midnight 1125 | milk 1126 | million 1127 | mimic 1128 | mind 1129 | minimum 1130 | minor 1131 | minute 1132 | miracle 1133 | mirror 1134 | misery 1135 | miss 1136 | mistake 1137 | mix 1138 | mixed 1139 | mixture 1140 | mobile 1141 | model 1142 | modify 1143 | mom 1144 | moment 1145 | monitor 1146 | monkey 1147 | monster 1148 | month 1149 | moon 1150 | moral 1151 | more 1152 | morning 1153 | mosquito 1154 | mother 1155 | motion 1156 | motor 1157 | mountain 1158 | mouse 1159 | move 1160 | movie 1161 | much 1162 | muffin 1163 | mule 1164 | multiply 1165 | muscle 1166 | museum 1167 | mushroom 1168 | music 1169 | must 1170 | mutual 1171 | myself 1172 | mystery 1173 | myth 1174 | naive 1175 | name 1176 | napkin 1177 | narrow 1178 | nasty 1179 | nation 1180 | nature 1181 | near 1182 | neck 1183 | need 1184 | negative 1185 | neglect 1186 | neither 1187 | nephew 1188 | nerve 1189 | nest 1190 | net 1191 | network 1192 | neutral 1193 | never 1194 | news 1195 | next 1196 | nice 1197 | night 1198 | noble 1199 | noise 1200 | nominee 1201 | noodle 1202 | normal 1203 | north 1204 | nose 1205 | notable 1206 | note 1207 | nothing 1208 | notice 1209 | novel 1210 | now 1211 | nuclear 1212 | number 1213 | nurse 1214 | nut 1215 | oak 1216 | obey 1217 | object 1218 | oblige 1219 | obscure 1220 | observe 1221 | obtain 1222 | obvious 1223 | occur 1224 | ocean 1225 | october 1226 | odor 1227 | off 1228 | offer 1229 | office 1230 | often 1231 | oil 1232 | okay 1233 | old 1234 | olive 1235 | olympic 1236 | omit 1237 | once 1238 | one 1239 | onion 1240 | online 1241 | only 1242 | open 1243 | opera 1244 | opinion 1245 | oppose 1246 | option 1247 | orange 1248 | orbit 1249 | orchard 1250 | order 1251 | ordinary 1252 | organ 1253 | orient 1254 | original 1255 | orphan 1256 | ostrich 1257 | other 1258 | outdoor 1259 | outer 1260 | output 1261 | outside 1262 | oval 1263 | oven 1264 | over 1265 | own 1266 | owner 1267 | oxygen 1268 | oyster 1269 | ozone 1270 | pact 1271 | paddle 1272 | page 1273 | pair 1274 | palace 1275 | palm 1276 | panda 1277 | panel 1278 | panic 1279 | panther 1280 | paper 1281 | parade 1282 | parent 1283 | park 1284 | parrot 1285 | party 1286 | pass 1287 | patch 1288 | path 1289 | patient 1290 | patrol 1291 | pattern 1292 | pause 1293 | pave 1294 | payment 1295 | peace 1296 | peanut 1297 | pear 1298 | peasant 1299 | pelican 1300 | pen 1301 | penalty 1302 | pencil 1303 | people 1304 | pepper 1305 | perfect 1306 | permit 1307 | person 1308 | pet 1309 | phone 1310 | photo 1311 | phrase 1312 | physical 1313 | piano 1314 | picnic 1315 | picture 1316 | piece 1317 | pig 1318 | pigeon 1319 | pill 1320 | pilot 1321 | pink 1322 | pioneer 1323 | pipe 1324 | pistol 1325 | pitch 1326 | pizza 1327 | place 1328 | planet 1329 | plastic 1330 | plate 1331 | play 1332 | please 1333 | pledge 1334 | pluck 1335 | plug 1336 | plunge 1337 | poem 1338 | poet 1339 | point 1340 | polar 1341 | pole 1342 | police 1343 | pond 1344 | pony 1345 | pool 1346 | popular 1347 | portion 1348 | position 1349 | possible 1350 | post 1351 | potato 1352 | pottery 1353 | poverty 1354 | powder 1355 | power 1356 | practice 1357 | praise 1358 | predict 1359 | prefer 1360 | prepare 1361 | present 1362 | pretty 1363 | prevent 1364 | price 1365 | pride 1366 | primary 1367 | print 1368 | priority 1369 | prison 1370 | private 1371 | prize 1372 | problem 1373 | process 1374 | produce 1375 | profit 1376 | program 1377 | project 1378 | promote 1379 | proof 1380 | property 1381 | prosper 1382 | protect 1383 | proud 1384 | provide 1385 | public 1386 | pudding 1387 | pull 1388 | pulp 1389 | pulse 1390 | pumpkin 1391 | punch 1392 | pupil 1393 | puppy 1394 | purchase 1395 | purity 1396 | purpose 1397 | purse 1398 | push 1399 | put 1400 | puzzle 1401 | pyramid 1402 | quality 1403 | quantum 1404 | quarter 1405 | question 1406 | quick 1407 | quit 1408 | quiz 1409 | quote 1410 | rabbit 1411 | raccoon 1412 | race 1413 | rack 1414 | radar 1415 | radio 1416 | rail 1417 | rain 1418 | raise 1419 | rally 1420 | ramp 1421 | ranch 1422 | random 1423 | range 1424 | rapid 1425 | rare 1426 | rate 1427 | rather 1428 | raven 1429 | raw 1430 | razor 1431 | ready 1432 | real 1433 | reason 1434 | rebel 1435 | rebuild 1436 | recall 1437 | receive 1438 | recipe 1439 | record 1440 | recycle 1441 | reduce 1442 | reflect 1443 | reform 1444 | refuse 1445 | region 1446 | regret 1447 | regular 1448 | reject 1449 | relax 1450 | release 1451 | relief 1452 | rely 1453 | remain 1454 | remember 1455 | remind 1456 | remove 1457 | render 1458 | renew 1459 | rent 1460 | reopen 1461 | repair 1462 | repeat 1463 | replace 1464 | report 1465 | require 1466 | rescue 1467 | resemble 1468 | resist 1469 | resource 1470 | response 1471 | result 1472 | retire 1473 | retreat 1474 | return 1475 | reunion 1476 | reveal 1477 | review 1478 | reward 1479 | rhythm 1480 | rib 1481 | ribbon 1482 | rice 1483 | rich 1484 | ride 1485 | ridge 1486 | rifle 1487 | right 1488 | rigid 1489 | ring 1490 | riot 1491 | ripple 1492 | risk 1493 | ritual 1494 | rival 1495 | river 1496 | road 1497 | roast 1498 | robot 1499 | robust 1500 | rocket 1501 | romance 1502 | roof 1503 | rookie 1504 | room 1505 | rose 1506 | rotate 1507 | rough 1508 | round 1509 | route 1510 | royal 1511 | rubber 1512 | rude 1513 | rug 1514 | rule 1515 | run 1516 | runway 1517 | rural 1518 | sad 1519 | saddle 1520 | sadness 1521 | safe 1522 | sail 1523 | salad 1524 | salmon 1525 | salon 1526 | salt 1527 | salute 1528 | same 1529 | sample 1530 | sand 1531 | satisfy 1532 | satoshi 1533 | sauce 1534 | sausage 1535 | save 1536 | say 1537 | scale 1538 | scan 1539 | scare 1540 | scatter 1541 | scene 1542 | scheme 1543 | school 1544 | science 1545 | scissors 1546 | scorpion 1547 | scout 1548 | scrap 1549 | screen 1550 | script 1551 | scrub 1552 | sea 1553 | search 1554 | season 1555 | seat 1556 | second 1557 | secret 1558 | section 1559 | security 1560 | seed 1561 | seek 1562 | segment 1563 | select 1564 | sell 1565 | seminar 1566 | senior 1567 | sense 1568 | sentence 1569 | series 1570 | service 1571 | session 1572 | settle 1573 | setup 1574 | seven 1575 | shadow 1576 | shaft 1577 | shallow 1578 | share 1579 | shed 1580 | shell 1581 | sheriff 1582 | shield 1583 | shift 1584 | shine 1585 | ship 1586 | shiver 1587 | shock 1588 | shoe 1589 | shoot 1590 | shop 1591 | short 1592 | shoulder 1593 | shove 1594 | shrimp 1595 | shrug 1596 | shuffle 1597 | shy 1598 | sibling 1599 | sick 1600 | side 1601 | siege 1602 | sight 1603 | sign 1604 | silent 1605 | silk 1606 | silly 1607 | silver 1608 | similar 1609 | simple 1610 | since 1611 | sing 1612 | siren 1613 | sister 1614 | situate 1615 | six 1616 | size 1617 | skate 1618 | sketch 1619 | ski 1620 | skill 1621 | skin 1622 | skirt 1623 | skull 1624 | slab 1625 | slam 1626 | sleep 1627 | slender 1628 | slice 1629 | slide 1630 | slight 1631 | slim 1632 | slogan 1633 | slot 1634 | slow 1635 | slush 1636 | small 1637 | smart 1638 | smile 1639 | smoke 1640 | smooth 1641 | snack 1642 | snake 1643 | snap 1644 | sniff 1645 | snow 1646 | soap 1647 | soccer 1648 | social 1649 | sock 1650 | soda 1651 | soft 1652 | solar 1653 | soldier 1654 | solid 1655 | solution 1656 | solve 1657 | someone 1658 | song 1659 | soon 1660 | sorry 1661 | sort 1662 | soul 1663 | sound 1664 | soup 1665 | source 1666 | south 1667 | space 1668 | spare 1669 | spatial 1670 | spawn 1671 | speak 1672 | special 1673 | speed 1674 | spell 1675 | spend 1676 | sphere 1677 | spice 1678 | spider 1679 | spike 1680 | spin 1681 | spirit 1682 | split 1683 | spoil 1684 | sponsor 1685 | spoon 1686 | sport 1687 | spot 1688 | spray 1689 | spread 1690 | spring 1691 | spy 1692 | square 1693 | squeeze 1694 | squirrel 1695 | stable 1696 | stadium 1697 | staff 1698 | stage 1699 | stairs 1700 | stamp 1701 | stand 1702 | start 1703 | state 1704 | stay 1705 | steak 1706 | steel 1707 | stem 1708 | step 1709 | stereo 1710 | stick 1711 | still 1712 | sting 1713 | stock 1714 | stomach 1715 | stone 1716 | stool 1717 | story 1718 | stove 1719 | strategy 1720 | street 1721 | strike 1722 | strong 1723 | struggle 1724 | student 1725 | stuff 1726 | stumble 1727 | style 1728 | subject 1729 | submit 1730 | subway 1731 | success 1732 | such 1733 | sudden 1734 | suffer 1735 | sugar 1736 | suggest 1737 | suit 1738 | summer 1739 | sun 1740 | sunny 1741 | sunset 1742 | super 1743 | supply 1744 | supreme 1745 | sure 1746 | surface 1747 | surge 1748 | surprise 1749 | surround 1750 | survey 1751 | suspect 1752 | sustain 1753 | swallow 1754 | swamp 1755 | swap 1756 | swarm 1757 | swear 1758 | sweet 1759 | swift 1760 | swim 1761 | swing 1762 | switch 1763 | sword 1764 | symbol 1765 | symptom 1766 | syrup 1767 | system 1768 | table 1769 | tackle 1770 | tag 1771 | tail 1772 | talent 1773 | talk 1774 | tank 1775 | tape 1776 | target 1777 | task 1778 | taste 1779 | tattoo 1780 | taxi 1781 | teach 1782 | team 1783 | tell 1784 | ten 1785 | tenant 1786 | tennis 1787 | tent 1788 | term 1789 | test 1790 | text 1791 | thank 1792 | that 1793 | theme 1794 | then 1795 | theory 1796 | there 1797 | they 1798 | thing 1799 | this 1800 | thought 1801 | three 1802 | thrive 1803 | throw 1804 | thumb 1805 | thunder 1806 | ticket 1807 | tide 1808 | tiger 1809 | tilt 1810 | timber 1811 | time 1812 | tiny 1813 | tip 1814 | tired 1815 | tissue 1816 | title 1817 | toast 1818 | tobacco 1819 | today 1820 | toddler 1821 | toe 1822 | together 1823 | toilet 1824 | token 1825 | tomato 1826 | tomorrow 1827 | tone 1828 | tongue 1829 | tonight 1830 | tool 1831 | tooth 1832 | top 1833 | topic 1834 | topple 1835 | torch 1836 | tornado 1837 | tortoise 1838 | toss 1839 | total 1840 | tourist 1841 | toward 1842 | tower 1843 | town 1844 | toy 1845 | track 1846 | trade 1847 | traffic 1848 | tragic 1849 | train 1850 | transfer 1851 | trap 1852 | trash 1853 | travel 1854 | tray 1855 | treat 1856 | tree 1857 | trend 1858 | trial 1859 | tribe 1860 | trick 1861 | trigger 1862 | trim 1863 | trip 1864 | trophy 1865 | trouble 1866 | truck 1867 | true 1868 | truly 1869 | trumpet 1870 | trust 1871 | truth 1872 | try 1873 | tube 1874 | tuition 1875 | tumble 1876 | tuna 1877 | tunnel 1878 | turkey 1879 | turn 1880 | turtle 1881 | twelve 1882 | twenty 1883 | twice 1884 | twin 1885 | twist 1886 | two 1887 | type 1888 | typical 1889 | ugly 1890 | umbrella 1891 | unable 1892 | unaware 1893 | uncle 1894 | uncover 1895 | under 1896 | undo 1897 | unfair 1898 | unfold 1899 | unhappy 1900 | uniform 1901 | unique 1902 | unit 1903 | universe 1904 | unknown 1905 | unlock 1906 | until 1907 | unusual 1908 | unveil 1909 | update 1910 | upgrade 1911 | uphold 1912 | upon 1913 | upper 1914 | upset 1915 | urban 1916 | urge 1917 | usage 1918 | use 1919 | used 1920 | useful 1921 | useless 1922 | usual 1923 | utility 1924 | vacant 1925 | vacuum 1926 | vague 1927 | valid 1928 | valley 1929 | valve 1930 | van 1931 | vanish 1932 | vapor 1933 | various 1934 | vast 1935 | vault 1936 | vehicle 1937 | velvet 1938 | vendor 1939 | venture 1940 | venue 1941 | verb 1942 | verify 1943 | version 1944 | very 1945 | vessel 1946 | veteran 1947 | viable 1948 | vibrant 1949 | vicious 1950 | victory 1951 | video 1952 | view 1953 | village 1954 | vintage 1955 | violin 1956 | virtual 1957 | virus 1958 | visa 1959 | visit 1960 | visual 1961 | vital 1962 | vivid 1963 | vocal 1964 | voice 1965 | void 1966 | volcano 1967 | volume 1968 | vote 1969 | voyage 1970 | wage 1971 | wagon 1972 | wait 1973 | walk 1974 | wall 1975 | walnut 1976 | want 1977 | warfare 1978 | warm 1979 | warrior 1980 | wash 1981 | wasp 1982 | waste 1983 | water 1984 | wave 1985 | way 1986 | wealth 1987 | weapon 1988 | wear 1989 | weasel 1990 | weather 1991 | web 1992 | wedding 1993 | weekend 1994 | weird 1995 | welcome 1996 | west 1997 | wet 1998 | whale 1999 | what 2000 | wheat 2001 | wheel 2002 | when 2003 | where 2004 | whip 2005 | whisper 2006 | wide 2007 | width 2008 | wife 2009 | wild 2010 | will 2011 | win 2012 | window 2013 | wine 2014 | wing 2015 | wink 2016 | winner 2017 | winter 2018 | wire 2019 | wisdom 2020 | wise 2021 | wish 2022 | witness 2023 | wolf 2024 | woman 2025 | wonder 2026 | wood 2027 | wool 2028 | word 2029 | work 2030 | world 2031 | worry 2032 | worth 2033 | wrap 2034 | wreck 2035 | wrestle 2036 | wrist 2037 | write 2038 | wrong 2039 | yard 2040 | year 2041 | yellow 2042 | you 2043 | young 2044 | youth 2045 | zebra 2046 | zero 2047 | zone 2048 | zoo -------------------------------------------------------------------------------- /src/main/resources/wordlists/french.txt: -------------------------------------------------------------------------------- 1 | abaisser 2 | abandon 3 | abdiquer 4 | abeille 5 | abolir 6 | aborder 7 | aboutir 8 | aboyer 9 | abrasif 10 | abreuver 11 | abriter 12 | abroger 13 | abrupt 14 | absence 15 | absolu 16 | absurde 17 | abusif 18 | abyssal 19 | académie 20 | acajou 21 | acarien 22 | accabler 23 | accepter 24 | acclamer 25 | accolade 26 | accroche 27 | accuser 28 | acerbe 29 | achat 30 | acheter 31 | aciduler 32 | acier 33 | acompte 34 | acquérir 35 | acronyme 36 | acteur 37 | actif 38 | actuel 39 | adepte 40 | adéquat 41 | adhésif 42 | adjectif 43 | adjuger 44 | admettre 45 | admirer 46 | adopter 47 | adorer 48 | adoucir 49 | adresse 50 | adroit 51 | adulte 52 | adverbe 53 | aérer 54 | aéronef 55 | affaire 56 | affecter 57 | affiche 58 | affreux 59 | affubler 60 | agacer 61 | agencer 62 | agile 63 | agiter 64 | agrafer 65 | agréable 66 | agrume 67 | aider 68 | aiguille 69 | ailier 70 | aimable 71 | aisance 72 | ajouter 73 | ajuster 74 | alarmer 75 | alchimie 76 | alerte 77 | algèbre 78 | algue 79 | aliéner 80 | aliment 81 | alléger 82 | alliage 83 | allouer 84 | allumer 85 | alourdir 86 | alpaga 87 | altesse 88 | alvéole 89 | amateur 90 | ambigu 91 | ambre 92 | aménager 93 | amertume 94 | amidon 95 | amiral 96 | amorcer 97 | amour 98 | amovible 99 | amphibie 100 | ampleur 101 | amusant 102 | analyse 103 | anaphore 104 | anarchie 105 | anatomie 106 | ancien 107 | anéantir 108 | angle 109 | angoisse 110 | anguleux 111 | animal 112 | annexer 113 | annonce 114 | annuel 115 | anodin 116 | anomalie 117 | anonyme 118 | anormal 119 | antenne 120 | antidote 121 | anxieux 122 | apaiser 123 | apéritif 124 | aplanir 125 | apologie 126 | appareil 127 | appeler 128 | apporter 129 | appuyer 130 | aquarium 131 | aqueduc 132 | arbitre 133 | arbuste 134 | ardeur 135 | ardoise 136 | argent 137 | arlequin 138 | armature 139 | armement 140 | armoire 141 | armure 142 | arpenter 143 | arracher 144 | arriver 145 | arroser 146 | arsenic 147 | artériel 148 | article 149 | aspect 150 | asphalte 151 | aspirer 152 | assaut 153 | asservir 154 | assiette 155 | associer 156 | assurer 157 | asticot 158 | astre 159 | astuce 160 | atelier 161 | atome 162 | atrium 163 | atroce 164 | attaque 165 | attentif 166 | attirer 167 | attraper 168 | aubaine 169 | auberge 170 | audace 171 | audible 172 | augurer 173 | aurore 174 | automne 175 | autruche 176 | avaler 177 | avancer 178 | avarice 179 | avenir 180 | averse 181 | aveugle 182 | aviateur 183 | avide 184 | avion 185 | aviser 186 | avoine 187 | avouer 188 | avril 189 | axial 190 | axiome 191 | badge 192 | bafouer 193 | bagage 194 | baguette 195 | baignade 196 | balancer 197 | balcon 198 | baleine 199 | balisage 200 | bambin 201 | bancaire 202 | bandage 203 | banlieue 204 | bannière 205 | banquier 206 | barbier 207 | baril 208 | baron 209 | barque 210 | barrage 211 | bassin 212 | bastion 213 | bataille 214 | bateau 215 | batterie 216 | baudrier 217 | bavarder 218 | belette 219 | bélier 220 | belote 221 | bénéfice 222 | berceau 223 | berger 224 | berline 225 | bermuda 226 | besace 227 | besogne 228 | bétail 229 | beurre 230 | biberon 231 | bicycle 232 | bidule 233 | bijou 234 | bilan 235 | bilingue 236 | billard 237 | binaire 238 | biologie 239 | biopsie 240 | biotype 241 | biscuit 242 | bison 243 | bistouri 244 | bitume 245 | bizarre 246 | blafard 247 | blague 248 | blanchir 249 | blessant 250 | blinder 251 | blond 252 | bloquer 253 | blouson 254 | bobard 255 | bobine 256 | boire 257 | boiser 258 | bolide 259 | bonbon 260 | bondir 261 | bonheur 262 | bonifier 263 | bonus 264 | bordure 265 | borne 266 | botte 267 | boucle 268 | boueux 269 | bougie 270 | boulon 271 | bouquin 272 | bourse 273 | boussole 274 | boutique 275 | boxeur 276 | branche 277 | brasier 278 | brave 279 | brebis 280 | brèche 281 | breuvage 282 | bricoler 283 | brigade 284 | brillant 285 | brioche 286 | brique 287 | brochure 288 | broder 289 | bronzer 290 | brousse 291 | broyeur 292 | brume 293 | brusque 294 | brutal 295 | bruyant 296 | buffle 297 | buisson 298 | bulletin 299 | bureau 300 | burin 301 | bustier 302 | butiner 303 | butoir 304 | buvable 305 | buvette 306 | cabanon 307 | cabine 308 | cachette 309 | cadeau 310 | cadre 311 | caféine 312 | caillou 313 | caisson 314 | calculer 315 | calepin 316 | calibre 317 | calmer 318 | calomnie 319 | calvaire 320 | camarade 321 | caméra 322 | camion 323 | campagne 324 | canal 325 | caneton 326 | canon 327 | cantine 328 | canular 329 | capable 330 | caporal 331 | caprice 332 | capsule 333 | capter 334 | capuche 335 | carabine 336 | carbone 337 | caresser 338 | caribou 339 | carnage 340 | carotte 341 | carreau 342 | carton 343 | cascade 344 | casier 345 | casque 346 | cassure 347 | causer 348 | caution 349 | cavalier 350 | caverne 351 | caviar 352 | cédille 353 | ceinture 354 | céleste 355 | cellule 356 | cendrier 357 | censurer 358 | central 359 | cercle 360 | cérébral 361 | cerise 362 | cerner 363 | cerveau 364 | cesser 365 | chagrin 366 | chaise 367 | chaleur 368 | chambre 369 | chance 370 | chapitre 371 | charbon 372 | chasseur 373 | chaton 374 | chausson 375 | chavirer 376 | chemise 377 | chenille 378 | chéquier 379 | chercher 380 | cheval 381 | chien 382 | chiffre 383 | chignon 384 | chimère 385 | chiot 386 | chlorure 387 | chocolat 388 | choisir 389 | chose 390 | chouette 391 | chrome 392 | chute 393 | cigare 394 | cigogne 395 | cimenter 396 | cinéma 397 | cintrer 398 | circuler 399 | cirer 400 | cirque 401 | citerne 402 | citoyen 403 | citron 404 | civil 405 | clairon 406 | clameur 407 | claquer 408 | classe 409 | clavier 410 | client 411 | cligner 412 | climat 413 | clivage 414 | cloche 415 | clonage 416 | cloporte 417 | cobalt 418 | cobra 419 | cocasse 420 | cocotier 421 | coder 422 | codifier 423 | coffre 424 | cogner 425 | cohésion 426 | coiffer 427 | coincer 428 | colère 429 | colibri 430 | colline 431 | colmater 432 | colonel 433 | combat 434 | comédie 435 | commande 436 | compact 437 | concert 438 | conduire 439 | confier 440 | congeler 441 | connoter 442 | consonne 443 | contact 444 | convexe 445 | copain 446 | copie 447 | corail 448 | corbeau 449 | cordage 450 | corniche 451 | corpus 452 | correct 453 | cortège 454 | cosmique 455 | costume 456 | coton 457 | coude 458 | coupure 459 | courage 460 | couteau 461 | couvrir 462 | coyote 463 | crabe 464 | crainte 465 | cravate 466 | crayon 467 | créature 468 | créditer 469 | crémeux 470 | creuser 471 | crevette 472 | cribler 473 | crier 474 | cristal 475 | critère 476 | croire 477 | croquer 478 | crotale 479 | crucial 480 | cruel 481 | crypter 482 | cubique 483 | cueillir 484 | cuillère 485 | cuisine 486 | cuivre 487 | culminer 488 | cultiver 489 | cumuler 490 | cupide 491 | curatif 492 | curseur 493 | cyanure 494 | cycle 495 | cylindre 496 | cynique 497 | daigner 498 | damier 499 | danger 500 | danseur 501 | dauphin 502 | débattre 503 | débiter 504 | déborder 505 | débrider 506 | débutant 507 | décaler 508 | décembre 509 | déchirer 510 | décider 511 | déclarer 512 | décorer 513 | décrire 514 | décupler 515 | dédale 516 | déductif 517 | déesse 518 | défensif 519 | défiler 520 | défrayer 521 | dégager 522 | dégivrer 523 | déglutir 524 | dégrafer 525 | déjeuner 526 | délice 527 | déloger 528 | demander 529 | demeurer 530 | démolir 531 | dénicher 532 | dénouer 533 | dentelle 534 | dénuder 535 | départ 536 | dépenser 537 | déphaser 538 | déplacer 539 | déposer 540 | déranger 541 | dérober 542 | désastre 543 | descente 544 | désert 545 | désigner 546 | désobéir 547 | dessiner 548 | destrier 549 | détacher 550 | détester 551 | détourer 552 | détresse 553 | devancer 554 | devenir 555 | deviner 556 | devoir 557 | diable 558 | dialogue 559 | diamant 560 | dicter 561 | différer 562 | digérer 563 | digital 564 | digne 565 | diluer 566 | dimanche 567 | diminuer 568 | dioxyde 569 | directif 570 | diriger 571 | discuter 572 | disposer 573 | dissiper 574 | distance 575 | divertir 576 | diviser 577 | docile 578 | docteur 579 | dogme 580 | doigt 581 | domaine 582 | domicile 583 | dompter 584 | donateur 585 | donjon 586 | donner 587 | dopamine 588 | dortoir 589 | dorure 590 | dosage 591 | doseur 592 | dossier 593 | dotation 594 | douanier 595 | double 596 | douceur 597 | douter 598 | doyen 599 | dragon 600 | draper 601 | dresser 602 | dribbler 603 | droiture 604 | duperie 605 | duplexe 606 | durable 607 | durcir 608 | dynastie 609 | éblouir 610 | écarter 611 | écharpe 612 | échelle 613 | éclairer 614 | éclipse 615 | éclore 616 | écluse 617 | école 618 | économie 619 | écorce 620 | écouter 621 | écraser 622 | écrémer 623 | écrivain 624 | écrou 625 | écume 626 | écureuil 627 | édifier 628 | éduquer 629 | effacer 630 | effectif 631 | effigie 632 | effort 633 | effrayer 634 | effusion 635 | égaliser 636 | égarer 637 | éjecter 638 | élaborer 639 | élargir 640 | électron 641 | élégant 642 | éléphant 643 | élève 644 | éligible 645 | élitisme 646 | éloge 647 | élucider 648 | éluder 649 | emballer 650 | embellir 651 | embryon 652 | émeraude 653 | émission 654 | emmener 655 | émotion 656 | émouvoir 657 | empereur 658 | employer 659 | emporter 660 | emprise 661 | émulsion 662 | encadrer 663 | enchère 664 | enclave 665 | encoche 666 | endiguer 667 | endosser 668 | endroit 669 | enduire 670 | énergie 671 | enfance 672 | enfermer 673 | enfouir 674 | engager 675 | engin 676 | englober 677 | énigme 678 | enjamber 679 | enjeu 680 | enlever 681 | ennemi 682 | ennuyeux 683 | enrichir 684 | enrobage 685 | enseigne 686 | entasser 687 | entendre 688 | entier 689 | entourer 690 | entraver 691 | énumérer 692 | envahir 693 | enviable 694 | envoyer 695 | enzyme 696 | éolien 697 | épaissir 698 | épargne 699 | épatant 700 | épaule 701 | épicerie 702 | épidémie 703 | épier 704 | épilogue 705 | épine 706 | épisode 707 | épitaphe 708 | époque 709 | épreuve 710 | éprouver 711 | épuisant 712 | équerre 713 | équipe 714 | ériger 715 | érosion 716 | erreur 717 | éruption 718 | escalier 719 | espadon 720 | espèce 721 | espiègle 722 | espoir 723 | esprit 724 | esquiver 725 | essayer 726 | essence 727 | essieu 728 | essorer 729 | estime 730 | estomac 731 | estrade 732 | étagère 733 | étaler 734 | étanche 735 | étatique 736 | éteindre 737 | étendoir 738 | éternel 739 | éthanol 740 | éthique 741 | ethnie 742 | étirer 743 | étoffer 744 | étoile 745 | étonnant 746 | étourdir 747 | étrange 748 | étroit 749 | étude 750 | euphorie 751 | évaluer 752 | évasion 753 | éventail 754 | évidence 755 | éviter 756 | évolutif 757 | évoquer 758 | exact 759 | exagérer 760 | exaucer 761 | exceller 762 | excitant 763 | exclusif 764 | excuse 765 | exécuter 766 | exemple 767 | exercer 768 | exhaler 769 | exhorter 770 | exigence 771 | exiler 772 | exister 773 | exotique 774 | expédier 775 | explorer 776 | exposer 777 | exprimer 778 | exquis 779 | extensif 780 | extraire 781 | exulter 782 | fable 783 | fabuleux 784 | facette 785 | facile 786 | facture 787 | faiblir 788 | falaise 789 | fameux 790 | famille 791 | farceur 792 | farfelu 793 | farine 794 | farouche 795 | fasciner 796 | fatal 797 | fatigue 798 | faucon 799 | fautif 800 | faveur 801 | favori 802 | fébrile 803 | féconder 804 | fédérer 805 | félin 806 | femme 807 | fémur 808 | fendoir 809 | féodal 810 | fermer 811 | féroce 812 | ferveur 813 | festival 814 | feuille 815 | feutre 816 | février 817 | fiasco 818 | ficeler 819 | fictif 820 | fidèle 821 | figure 822 | filature 823 | filetage 824 | filière 825 | filleul 826 | filmer 827 | filou 828 | filtrer 829 | financer 830 | finir 831 | fiole 832 | firme 833 | fissure 834 | fixer 835 | flairer 836 | flamme 837 | flasque 838 | flatteur 839 | fléau 840 | flèche 841 | fleur 842 | flexion 843 | flocon 844 | flore 845 | fluctuer 846 | fluide 847 | fluvial 848 | folie 849 | fonderie 850 | fongible 851 | fontaine 852 | forcer 853 | forgeron 854 | formuler 855 | fortune 856 | fossile 857 | foudre 858 | fougère 859 | fouiller 860 | foulure 861 | fourmi 862 | fragile 863 | fraise 864 | franchir 865 | frapper 866 | frayeur 867 | frégate 868 | freiner 869 | frelon 870 | frémir 871 | frénésie 872 | frère 873 | friable 874 | friction 875 | frisson 876 | frivole 877 | froid 878 | fromage 879 | frontal 880 | frotter 881 | fruit 882 | fugitif 883 | fuite 884 | fureur 885 | furieux 886 | furtif 887 | fusion 888 | futur 889 | gagner 890 | galaxie 891 | galerie 892 | gambader 893 | garantir 894 | gardien 895 | garnir 896 | garrigue 897 | gazelle 898 | gazon 899 | géant 900 | gélatine 901 | gélule 902 | gendarme 903 | général 904 | génie 905 | genou 906 | gentil 907 | géologie 908 | géomètre 909 | géranium 910 | germe 911 | gestuel 912 | geyser 913 | gibier 914 | gicler 915 | girafe 916 | givre 917 | glace 918 | glaive 919 | glisser 920 | globe 921 | gloire 922 | glorieux 923 | golfeur 924 | gomme 925 | gonfler 926 | gorge 927 | gorille 928 | goudron 929 | gouffre 930 | goulot 931 | goupille 932 | gourmand 933 | goutte 934 | graduel 935 | graffiti 936 | graine 937 | grand 938 | grappin 939 | gratuit 940 | gravir 941 | grenat 942 | griffure 943 | griller 944 | grimper 945 | grogner 946 | gronder 947 | grotte 948 | groupe 949 | gruger 950 | grutier 951 | gruyère 952 | guépard 953 | guerrier 954 | guide 955 | guimauve 956 | guitare 957 | gustatif 958 | gymnaste 959 | gyrostat 960 | habitude 961 | hachoir 962 | halte 963 | hameau 964 | hangar 965 | hanneton 966 | haricot 967 | harmonie 968 | harpon 969 | hasard 970 | hélium 971 | hématome 972 | herbe 973 | hérisson 974 | hermine 975 | héron 976 | hésiter 977 | heureux 978 | hiberner 979 | hibou 980 | hilarant 981 | histoire 982 | hiver 983 | homard 984 | hommage 985 | homogène 986 | honneur 987 | honorer 988 | honteux 989 | horde 990 | horizon 991 | horloge 992 | hormone 993 | horrible 994 | houleux 995 | housse 996 | hublot 997 | huileux 998 | humain 999 | humble 1000 | humide 1001 | humour 1002 | hurler 1003 | hydromel 1004 | hygiène 1005 | hymne 1006 | hypnose 1007 | idylle 1008 | ignorer 1009 | iguane 1010 | illicite 1011 | illusion 1012 | image 1013 | imbiber 1014 | imiter 1015 | immense 1016 | immobile 1017 | immuable 1018 | impact 1019 | impérial 1020 | implorer 1021 | imposer 1022 | imprimer 1023 | imputer 1024 | incarner 1025 | incendie 1026 | incident 1027 | incliner 1028 | incolore 1029 | indexer 1030 | indice 1031 | inductif 1032 | inédit 1033 | ineptie 1034 | inexact 1035 | infini 1036 | infliger 1037 | informer 1038 | infusion 1039 | ingérer 1040 | inhaler 1041 | inhiber 1042 | injecter 1043 | injure 1044 | innocent 1045 | inoculer 1046 | inonder 1047 | inscrire 1048 | insecte 1049 | insigne 1050 | insolite 1051 | inspirer 1052 | instinct 1053 | insulter 1054 | intact 1055 | intense 1056 | intime 1057 | intrigue 1058 | intuitif 1059 | inutile 1060 | invasion 1061 | inventer 1062 | inviter 1063 | invoquer 1064 | ironique 1065 | irradier 1066 | irréel 1067 | irriter 1068 | isoler 1069 | ivoire 1070 | ivresse 1071 | jaguar 1072 | jaillir 1073 | jambe 1074 | janvier 1075 | jardin 1076 | jauger 1077 | jaune 1078 | javelot 1079 | jetable 1080 | jeton 1081 | jeudi 1082 | jeunesse 1083 | joindre 1084 | joncher 1085 | jongler 1086 | joueur 1087 | jouissif 1088 | journal 1089 | jovial 1090 | joyau 1091 | joyeux 1092 | jubiler 1093 | jugement 1094 | junior 1095 | jupon 1096 | juriste 1097 | justice 1098 | juteux 1099 | juvénile 1100 | kayak 1101 | kimono 1102 | kiosque 1103 | label 1104 | labial 1105 | labourer 1106 | lacérer 1107 | lactose 1108 | lagune 1109 | laine 1110 | laisser 1111 | laitier 1112 | lambeau 1113 | lamelle 1114 | lampe 1115 | lanceur 1116 | langage 1117 | lanterne 1118 | lapin 1119 | largeur 1120 | larme 1121 | laurier 1122 | lavabo 1123 | lavoir 1124 | lecture 1125 | légal 1126 | léger 1127 | légume 1128 | lessive 1129 | lettre 1130 | levier 1131 | lexique 1132 | lézard 1133 | liasse 1134 | libérer 1135 | libre 1136 | licence 1137 | licorne 1138 | liège 1139 | lièvre 1140 | ligature 1141 | ligoter 1142 | ligue 1143 | limer 1144 | limite 1145 | limonade 1146 | limpide 1147 | linéaire 1148 | lingot 1149 | lionceau 1150 | liquide 1151 | lisière 1152 | lister 1153 | lithium 1154 | litige 1155 | littoral 1156 | livreur 1157 | logique 1158 | lointain 1159 | loisir 1160 | lombric 1161 | loterie 1162 | louer 1163 | lourd 1164 | loutre 1165 | louve 1166 | loyal 1167 | lubie 1168 | lucide 1169 | lucratif 1170 | lueur 1171 | lugubre 1172 | luisant 1173 | lumière 1174 | lunaire 1175 | lundi 1176 | luron 1177 | lutter 1178 | luxueux 1179 | machine 1180 | magasin 1181 | magenta 1182 | magique 1183 | maigre 1184 | maillon 1185 | maintien 1186 | mairie 1187 | maison 1188 | majorer 1189 | malaxer 1190 | maléfice 1191 | malheur 1192 | malice 1193 | mallette 1194 | mammouth 1195 | mandater 1196 | maniable 1197 | manquant 1198 | manteau 1199 | manuel 1200 | marathon 1201 | marbre 1202 | marchand 1203 | mardi 1204 | maritime 1205 | marqueur 1206 | marron 1207 | marteler 1208 | mascotte 1209 | massif 1210 | matériel 1211 | matière 1212 | matraque 1213 | maudire 1214 | maussade 1215 | mauve 1216 | maximal 1217 | méchant 1218 | méconnu 1219 | médaille 1220 | médecin 1221 | méditer 1222 | méduse 1223 | meilleur 1224 | mélange 1225 | mélodie 1226 | membre 1227 | mémoire 1228 | menacer 1229 | mener 1230 | menhir 1231 | mensonge 1232 | mentor 1233 | mercredi 1234 | mérite 1235 | merle 1236 | messager 1237 | mesure 1238 | métal 1239 | météore 1240 | méthode 1241 | métier 1242 | meuble 1243 | miauler 1244 | microbe 1245 | miette 1246 | mignon 1247 | migrer 1248 | milieu 1249 | million 1250 | mimique 1251 | mince 1252 | minéral 1253 | minimal 1254 | minorer 1255 | minute 1256 | miracle 1257 | miroiter 1258 | missile 1259 | mixte 1260 | mobile 1261 | moderne 1262 | moelleux 1263 | mondial 1264 | moniteur 1265 | monnaie 1266 | monotone 1267 | monstre 1268 | montagne 1269 | monument 1270 | moqueur 1271 | morceau 1272 | morsure 1273 | mortier 1274 | moteur 1275 | motif 1276 | mouche 1277 | moufle 1278 | moulin 1279 | mousson 1280 | mouton 1281 | mouvant 1282 | multiple 1283 | munition 1284 | muraille 1285 | murène 1286 | murmure 1287 | muscle 1288 | muséum 1289 | musicien 1290 | mutation 1291 | muter 1292 | mutuel 1293 | myriade 1294 | myrtille 1295 | mystère 1296 | mythique 1297 | nageur 1298 | nappe 1299 | narquois 1300 | narrer 1301 | natation 1302 | nation 1303 | nature 1304 | naufrage 1305 | nautique 1306 | navire 1307 | nébuleux 1308 | nectar 1309 | néfaste 1310 | négation 1311 | négliger 1312 | négocier 1313 | neige 1314 | nerveux 1315 | nettoyer 1316 | neurone 1317 | neutron 1318 | neveu 1319 | niche 1320 | nickel 1321 | nitrate 1322 | niveau 1323 | noble 1324 | nocif 1325 | nocturne 1326 | noirceur 1327 | noisette 1328 | nomade 1329 | nombreux 1330 | nommer 1331 | normatif 1332 | notable 1333 | notifier 1334 | notoire 1335 | nourrir 1336 | nouveau 1337 | novateur 1338 | novembre 1339 | novice 1340 | nuage 1341 | nuancer 1342 | nuire 1343 | nuisible 1344 | numéro 1345 | nuptial 1346 | nuque 1347 | nutritif 1348 | obéir 1349 | objectif 1350 | obliger 1351 | obscur 1352 | observer 1353 | obstacle 1354 | obtenir 1355 | obturer 1356 | occasion 1357 | occuper 1358 | océan 1359 | octobre 1360 | octroyer 1361 | octupler 1362 | oculaire 1363 | odeur 1364 | odorant 1365 | offenser 1366 | officier 1367 | offrir 1368 | ogive 1369 | oiseau 1370 | oisillon 1371 | olfactif 1372 | olivier 1373 | ombrage 1374 | omettre 1375 | onctueux 1376 | onduler 1377 | onéreux 1378 | onirique 1379 | opale 1380 | opaque 1381 | opérer 1382 | opinion 1383 | opportun 1384 | opprimer 1385 | opter 1386 | optique 1387 | orageux 1388 | orange 1389 | orbite 1390 | ordonner 1391 | oreille 1392 | organe 1393 | orgueil 1394 | orifice 1395 | ornement 1396 | orque 1397 | ortie 1398 | osciller 1399 | osmose 1400 | ossature 1401 | otarie 1402 | ouragan 1403 | ourson 1404 | outil 1405 | outrager 1406 | ouvrage 1407 | ovation 1408 | oxyde 1409 | oxygène 1410 | ozone 1411 | paisible 1412 | palace 1413 | palmarès 1414 | palourde 1415 | palper 1416 | panache 1417 | panda 1418 | pangolin 1419 | paniquer 1420 | panneau 1421 | panorama 1422 | pantalon 1423 | papaye 1424 | papier 1425 | papoter 1426 | papyrus 1427 | paradoxe 1428 | parcelle 1429 | paresse 1430 | parfumer 1431 | parler 1432 | parole 1433 | parrain 1434 | parsemer 1435 | partager 1436 | parure 1437 | parvenir 1438 | passion 1439 | pastèque 1440 | paternel 1441 | patience 1442 | patron 1443 | pavillon 1444 | pavoiser 1445 | payer 1446 | paysage 1447 | peigne 1448 | peintre 1449 | pelage 1450 | pélican 1451 | pelle 1452 | pelouse 1453 | peluche 1454 | pendule 1455 | pénétrer 1456 | pénible 1457 | pensif 1458 | pénurie 1459 | pépite 1460 | péplum 1461 | perdrix 1462 | perforer 1463 | période 1464 | permuter 1465 | perplexe 1466 | persil 1467 | perte 1468 | peser 1469 | pétale 1470 | petit 1471 | pétrir 1472 | peuple 1473 | pharaon 1474 | phobie 1475 | phoque 1476 | photon 1477 | phrase 1478 | physique 1479 | piano 1480 | pictural 1481 | pièce 1482 | pierre 1483 | pieuvre 1484 | pilote 1485 | pinceau 1486 | pipette 1487 | piquer 1488 | pirogue 1489 | piscine 1490 | piston 1491 | pivoter 1492 | pixel 1493 | pizza 1494 | placard 1495 | plafond 1496 | plaisir 1497 | planer 1498 | plaque 1499 | plastron 1500 | plateau 1501 | pleurer 1502 | plexus 1503 | pliage 1504 | plomb 1505 | plonger 1506 | pluie 1507 | plumage 1508 | pochette 1509 | poésie 1510 | poète 1511 | pointe 1512 | poirier 1513 | poisson 1514 | poivre 1515 | polaire 1516 | policier 1517 | pollen 1518 | polygone 1519 | pommade 1520 | pompier 1521 | ponctuel 1522 | pondérer 1523 | poney 1524 | portique 1525 | position 1526 | posséder 1527 | posture 1528 | potager 1529 | poteau 1530 | potion 1531 | pouce 1532 | poulain 1533 | poumon 1534 | pourpre 1535 | poussin 1536 | pouvoir 1537 | prairie 1538 | pratique 1539 | précieux 1540 | prédire 1541 | préfixe 1542 | prélude 1543 | prénom 1544 | présence 1545 | prétexte 1546 | prévoir 1547 | primitif 1548 | prince 1549 | prison 1550 | priver 1551 | problème 1552 | procéder 1553 | prodige 1554 | profond 1555 | progrès 1556 | proie 1557 | projeter 1558 | prologue 1559 | promener 1560 | propre 1561 | prospère 1562 | protéger 1563 | prouesse 1564 | proverbe 1565 | prudence 1566 | pruneau 1567 | psychose 1568 | public 1569 | puceron 1570 | puiser 1571 | pulpe 1572 | pulsar 1573 | punaise 1574 | punitif 1575 | pupitre 1576 | purifier 1577 | puzzle 1578 | pyramide 1579 | quasar 1580 | querelle 1581 | question 1582 | quiétude 1583 | quitter 1584 | quotient 1585 | racine 1586 | raconter 1587 | radieux 1588 | ragondin 1589 | raideur 1590 | raisin 1591 | ralentir 1592 | rallonge 1593 | ramasser 1594 | rapide 1595 | rasage 1596 | ratisser 1597 | ravager 1598 | ravin 1599 | rayonner 1600 | réactif 1601 | réagir 1602 | réaliser 1603 | réanimer 1604 | recevoir 1605 | réciter 1606 | réclamer 1607 | récolter 1608 | recruter 1609 | reculer 1610 | recycler 1611 | rédiger 1612 | redouter 1613 | refaire 1614 | réflexe 1615 | réformer 1616 | refrain 1617 | refuge 1618 | régalien 1619 | région 1620 | réglage 1621 | régulier 1622 | réitérer 1623 | rejeter 1624 | rejouer 1625 | relatif 1626 | relever 1627 | relief 1628 | remarque 1629 | remède 1630 | remise 1631 | remonter 1632 | remplir 1633 | remuer 1634 | renard 1635 | renfort 1636 | renifler 1637 | renoncer 1638 | rentrer 1639 | renvoi 1640 | replier 1641 | reporter 1642 | reprise 1643 | reptile 1644 | requin 1645 | réserve 1646 | résineux 1647 | résoudre 1648 | respect 1649 | rester 1650 | résultat 1651 | rétablir 1652 | retenir 1653 | réticule 1654 | retomber 1655 | retracer 1656 | réunion 1657 | réussir 1658 | revanche 1659 | revivre 1660 | révolte 1661 | révulsif 1662 | richesse 1663 | rideau 1664 | rieur 1665 | rigide 1666 | rigoler 1667 | rincer 1668 | riposter 1669 | risible 1670 | risque 1671 | rituel 1672 | rival 1673 | rivière 1674 | rocheux 1675 | romance 1676 | rompre 1677 | ronce 1678 | rondin 1679 | roseau 1680 | rosier 1681 | rotatif 1682 | rotor 1683 | rotule 1684 | rouge 1685 | rouille 1686 | rouleau 1687 | routine 1688 | royaume 1689 | ruban 1690 | rubis 1691 | ruche 1692 | ruelle 1693 | rugueux 1694 | ruiner 1695 | ruisseau 1696 | ruser 1697 | rustique 1698 | rythme 1699 | sabler 1700 | saboter 1701 | sabre 1702 | sacoche 1703 | safari 1704 | sagesse 1705 | saisir 1706 | salade 1707 | salive 1708 | salon 1709 | saluer 1710 | samedi 1711 | sanction 1712 | sanglier 1713 | sarcasme 1714 | sardine 1715 | saturer 1716 | saugrenu 1717 | saumon 1718 | sauter 1719 | sauvage 1720 | savant 1721 | savonner 1722 | scalpel 1723 | scandale 1724 | scélérat 1725 | scénario 1726 | sceptre 1727 | schéma 1728 | science 1729 | scinder 1730 | score 1731 | scrutin 1732 | sculpter 1733 | séance 1734 | sécable 1735 | sécher 1736 | secouer 1737 | sécréter 1738 | sédatif 1739 | séduire 1740 | seigneur 1741 | séjour 1742 | sélectif 1743 | semaine 1744 | sembler 1745 | semence 1746 | séminal 1747 | sénateur 1748 | sensible 1749 | sentence 1750 | séparer 1751 | séquence 1752 | serein 1753 | sergent 1754 | sérieux 1755 | serrure 1756 | sérum 1757 | service 1758 | sésame 1759 | sévir 1760 | sevrage 1761 | sextuple 1762 | sidéral 1763 | siècle 1764 | siéger 1765 | siffler 1766 | sigle 1767 | signal 1768 | silence 1769 | silicium 1770 | simple 1771 | sincère 1772 | sinistre 1773 | siphon 1774 | sirop 1775 | sismique 1776 | situer 1777 | skier 1778 | social 1779 | socle 1780 | sodium 1781 | soigneux 1782 | soldat 1783 | soleil 1784 | solitude 1785 | soluble 1786 | sombre 1787 | sommeil 1788 | somnoler 1789 | sonde 1790 | songeur 1791 | sonnette 1792 | sonore 1793 | sorcier 1794 | sortir 1795 | sosie 1796 | sottise 1797 | soucieux 1798 | soudure 1799 | souffle 1800 | soulever 1801 | soupape 1802 | source 1803 | soutirer 1804 | souvenir 1805 | spacieux 1806 | spatial 1807 | spécial 1808 | sphère 1809 | spiral 1810 | stable 1811 | station 1812 | sternum 1813 | stimulus 1814 | stipuler 1815 | strict 1816 | studieux 1817 | stupeur 1818 | styliste 1819 | sublime 1820 | substrat 1821 | subtil 1822 | subvenir 1823 | succès 1824 | sucre 1825 | suffixe 1826 | suggérer 1827 | suiveur 1828 | sulfate 1829 | superbe 1830 | supplier 1831 | surface 1832 | suricate 1833 | surmener 1834 | surprise 1835 | sursaut 1836 | survie 1837 | suspect 1838 | syllabe 1839 | symbole 1840 | symétrie 1841 | synapse 1842 | syntaxe 1843 | système 1844 | tabac 1845 | tablier 1846 | tactile 1847 | tailler 1848 | talent 1849 | talisman 1850 | talonner 1851 | tambour 1852 | tamiser 1853 | tangible 1854 | tapis 1855 | taquiner 1856 | tarder 1857 | tarif 1858 | tartine 1859 | tasse 1860 | tatami 1861 | tatouage 1862 | taupe 1863 | taureau 1864 | taxer 1865 | témoin 1866 | temporel 1867 | tenaille 1868 | tendre 1869 | teneur 1870 | tenir 1871 | tension 1872 | terminer 1873 | terne 1874 | terrible 1875 | tétine 1876 | texte 1877 | thème 1878 | théorie 1879 | thérapie 1880 | thorax 1881 | tibia 1882 | tiède 1883 | timide 1884 | tirelire 1885 | tiroir 1886 | tissu 1887 | titane 1888 | titre 1889 | tituber 1890 | toboggan 1891 | tolérant 1892 | tomate 1893 | tonique 1894 | tonneau 1895 | toponyme 1896 | torche 1897 | tordre 1898 | tornade 1899 | torpille 1900 | torrent 1901 | torse 1902 | tortue 1903 | totem 1904 | toucher 1905 | tournage 1906 | tousser 1907 | toxine 1908 | traction 1909 | trafic 1910 | tragique 1911 | trahir 1912 | train 1913 | trancher 1914 | travail 1915 | trèfle 1916 | tremper 1917 | trésor 1918 | treuil 1919 | triage 1920 | tribunal 1921 | tricoter 1922 | trilogie 1923 | triomphe 1924 | tripler 1925 | triturer 1926 | trivial 1927 | trombone 1928 | tronc 1929 | tropical 1930 | troupeau 1931 | tuile 1932 | tulipe 1933 | tumulte 1934 | tunnel 1935 | turbine 1936 | tuteur 1937 | tutoyer 1938 | tuyau 1939 | tympan 1940 | typhon 1941 | typique 1942 | tyran 1943 | ubuesque 1944 | ultime 1945 | ultrason 1946 | unanime 1947 | unifier 1948 | union 1949 | unique 1950 | unitaire 1951 | univers 1952 | uranium 1953 | urbain 1954 | urticant 1955 | usage 1956 | usine 1957 | usuel 1958 | usure 1959 | utile 1960 | utopie 1961 | vacarme 1962 | vaccin 1963 | vagabond 1964 | vague 1965 | vaillant 1966 | vaincre 1967 | vaisseau 1968 | valable 1969 | valise 1970 | vallon 1971 | valve 1972 | vampire 1973 | vanille 1974 | vapeur 1975 | varier 1976 | vaseux 1977 | vassal 1978 | vaste 1979 | vecteur 1980 | vedette 1981 | végétal 1982 | véhicule 1983 | veinard 1984 | véloce 1985 | vendredi 1986 | vénérer 1987 | venger 1988 | venimeux 1989 | ventouse 1990 | verdure 1991 | vérin 1992 | vernir 1993 | verrou 1994 | verser 1995 | vertu 1996 | veston 1997 | vétéran 1998 | vétuste 1999 | vexant 2000 | vexer 2001 | viaduc 2002 | viande 2003 | victoire 2004 | vidange 2005 | vidéo 2006 | vignette 2007 | vigueur 2008 | vilain 2009 | village 2010 | vinaigre 2011 | violon 2012 | vipère 2013 | virement 2014 | virtuose 2015 | virus 2016 | visage 2017 | viseur 2018 | vision 2019 | visqueux 2020 | visuel 2021 | vital 2022 | vitesse 2023 | viticole 2024 | vitrine 2025 | vivace 2026 | vivipare 2027 | vocation 2028 | voguer 2029 | voile 2030 | voisin 2031 | voiture 2032 | volaille 2033 | volcan 2034 | voltiger 2035 | volume 2036 | vorace 2037 | vortex 2038 | voter 2039 | vouloir 2040 | voyage 2041 | voyelle 2042 | wagon 2043 | xénon 2044 | yacht 2045 | zèbre 2046 | zénith 2047 | zeste 2048 | zoologie -------------------------------------------------------------------------------- /src/main/resources/wordlists/japanese.txt: -------------------------------------------------------------------------------- 1 | あいこくしん 2 | あいさつ 3 | あいだ 4 | あおぞら 5 | あかちゃん 6 | あきる 7 | あけがた 8 | あける 9 | あこがれる 10 | あさい 11 | あさひ 12 | あしあと 13 | あじわう 14 | あずかる 15 | あずき 16 | あそぶ 17 | あたえる 18 | あたためる 19 | あたりまえ 20 | あたる 21 | あつい 22 | あつかう 23 | あっしゅく 24 | あつまり 25 | あつめる 26 | あてな 27 | あてはまる 28 | あひる 29 | あぶら 30 | あぶる 31 | あふれる 32 | あまい 33 | あまど 34 | あまやかす 35 | あまり 36 | あみもの 37 | あめりか 38 | あやまる 39 | あゆむ 40 | あらいぐま 41 | あらし 42 | あらすじ 43 | あらためる 44 | あらゆる 45 | あらわす 46 | ありがとう 47 | あわせる 48 | あわてる 49 | あんい 50 | あんがい 51 | あんこ 52 | あんぜん 53 | あんてい 54 | あんない 55 | あんまり 56 | いいだす 57 | いおん 58 | いがい 59 | いがく 60 | いきおい 61 | いきなり 62 | いきもの 63 | いきる 64 | いくじ 65 | いくぶん 66 | いけばな 67 | いけん 68 | いこう 69 | いこく 70 | いこつ 71 | いさましい 72 | いさん 73 | いしき 74 | いじゅう 75 | いじょう 76 | いじわる 77 | いずみ 78 | いずれ 79 | いせい 80 | いせえび 81 | いせかい 82 | いせき 83 | いぜん 84 | いそうろう 85 | いそがしい 86 | いだい 87 | いだく 88 | いたずら 89 | いたみ 90 | いたりあ 91 | いちおう 92 | いちじ 93 | いちど 94 | いちば 95 | いちぶ 96 | いちりゅう 97 | いつか 98 | いっしゅん 99 | いっせい 100 | いっそう 101 | いったん 102 | いっち 103 | いってい 104 | いっぽう 105 | いてざ 106 | いてん 107 | いどう 108 | いとこ 109 | いない 110 | いなか 111 | いねむり 112 | いのち 113 | いのる 114 | いはつ 115 | いばる 116 | いはん 117 | いびき 118 | いひん 119 | いふく 120 | いへん 121 | いほう 122 | いみん 123 | いもうと 124 | いもたれ 125 | いもり 126 | いやがる 127 | いやす 128 | いよかん 129 | いよく 130 | いらい 131 | いらすと 132 | いりぐち 133 | いりょう 134 | いれい 135 | いれもの 136 | いれる 137 | いろえんぴつ 138 | いわい 139 | いわう 140 | いわかん 141 | いわば 142 | いわゆる 143 | いんげんまめ 144 | いんさつ 145 | いんしょう 146 | いんよう 147 | うえき 148 | うえる 149 | うおざ 150 | うがい 151 | うかぶ 152 | うかべる 153 | うきわ 154 | うくらいな 155 | うくれれ 156 | うけたまわる 157 | うけつけ 158 | うけとる 159 | うけもつ 160 | うける 161 | うごかす 162 | うごく 163 | うこん 164 | うさぎ 165 | うしなう 166 | うしろがみ 167 | うすい 168 | うすぎ 169 | うすぐらい 170 | うすめる 171 | うせつ 172 | うちあわせ 173 | うちがわ 174 | うちき 175 | うちゅう 176 | うっかり 177 | うつくしい 178 | うったえる 179 | うつる 180 | うどん 181 | うなぎ 182 | うなじ 183 | うなずく 184 | うなる 185 | うねる 186 | うのう 187 | うぶげ 188 | うぶごえ 189 | うまれる 190 | うめる 191 | うもう 192 | うやまう 193 | うよく 194 | うらがえす 195 | うらぐち 196 | うらない 197 | うりあげ 198 | うりきれ 199 | うるさい 200 | うれしい 201 | うれゆき 202 | うれる 203 | うろこ 204 | うわき 205 | うわさ 206 | うんこう 207 | うんちん 208 | うんてん 209 | うんどう 210 | えいえん 211 | えいが 212 | えいきょう 213 | えいご 214 | えいせい 215 | えいぶん 216 | えいよう 217 | えいわ 218 | えおり 219 | えがお 220 | えがく 221 | えきたい 222 | えくせる 223 | えしゃく 224 | えすて 225 | えつらん 226 | えのぐ 227 | えほうまき 228 | えほん 229 | えまき 230 | えもじ 231 | えもの 232 | えらい 233 | えらぶ 234 | えりあ 235 | えんえん 236 | えんかい 237 | えんぎ 238 | えんげき 239 | えんしゅう 240 | えんぜつ 241 | えんそく 242 | えんちょう 243 | えんとつ 244 | おいかける 245 | おいこす 246 | おいしい 247 | おいつく 248 | おうえん 249 | おうさま 250 | おうじ 251 | おうせつ 252 | おうたい 253 | おうふく 254 | おうべい 255 | おうよう 256 | おえる 257 | おおい 258 | おおう 259 | おおどおり 260 | おおや 261 | おおよそ 262 | おかえり 263 | おかず 264 | おがむ 265 | おかわり 266 | おぎなう 267 | おきる 268 | おくさま 269 | おくじょう 270 | おくりがな 271 | おくる 272 | おくれる 273 | おこす 274 | おこなう 275 | おこる 276 | おさえる 277 | おさない 278 | おさめる 279 | おしいれ 280 | おしえる 281 | おじぎ 282 | おじさん 283 | おしゃれ 284 | おそらく 285 | おそわる 286 | おたがい 287 | おたく 288 | おだやか 289 | おちつく 290 | おっと 291 | おつり 292 | おでかけ 293 | おとしもの 294 | おとなしい 295 | おどり 296 | おどろかす 297 | おばさん 298 | おまいり 299 | おめでとう 300 | おもいで 301 | おもう 302 | おもたい 303 | おもちゃ 304 | おやつ 305 | おやゆび 306 | およぼす 307 | おらんだ 308 | おろす 309 | おんがく 310 | おんけい 311 | おんしゃ 312 | おんせん 313 | おんだん 314 | おんちゅう 315 | おんどけい 316 | かあつ 317 | かいが 318 | がいき 319 | がいけん 320 | がいこう 321 | かいさつ 322 | かいしゃ 323 | かいすいよく 324 | かいぜん 325 | かいぞうど 326 | かいつう 327 | かいてん 328 | かいとう 329 | かいふく 330 | がいへき 331 | かいほう 332 | かいよう 333 | がいらい 334 | かいわ 335 | かえる 336 | かおり 337 | かかえる 338 | かがく 339 | かがし 340 | かがみ 341 | かくご 342 | かくとく 343 | かざる 344 | がぞう 345 | かたい 346 | かたち 347 | がちょう 348 | がっきゅう 349 | がっこう 350 | がっさん 351 | がっしょう 352 | かなざわし 353 | かのう 354 | がはく 355 | かぶか 356 | かほう 357 | かほご 358 | かまう 359 | かまぼこ 360 | かめれおん 361 | かゆい 362 | かようび 363 | からい 364 | かるい 365 | かろう 366 | かわく 367 | かわら 368 | がんか 369 | かんけい 370 | かんこう 371 | かんしゃ 372 | かんそう 373 | かんたん 374 | かんち 375 | がんばる 376 | きあい 377 | きあつ 378 | きいろ 379 | ぎいん 380 | きうい 381 | きうん 382 | きえる 383 | きおう 384 | きおく 385 | きおち 386 | きおん 387 | きかい 388 | きかく 389 | きかんしゃ 390 | ききて 391 | きくばり 392 | きくらげ 393 | きけんせい 394 | きこう 395 | きこえる 396 | きこく 397 | きさい 398 | きさく 399 | きさま 400 | きさらぎ 401 | ぎじかがく 402 | ぎしき 403 | ぎじたいけん 404 | ぎじにってい 405 | ぎじゅつしゃ 406 | きすう 407 | きせい 408 | きせき 409 | きせつ 410 | きそう 411 | きぞく 412 | きぞん 413 | きたえる 414 | きちょう 415 | きつえん 416 | ぎっちり 417 | きつつき 418 | きつね 419 | きてい 420 | きどう 421 | きどく 422 | きない 423 | きなが 424 | きなこ 425 | きぬごし 426 | きねん 427 | きのう 428 | きのした 429 | きはく 430 | きびしい 431 | きひん 432 | きふく 433 | きぶん 434 | きぼう 435 | きほん 436 | きまる 437 | きみつ 438 | きむずかしい 439 | きめる 440 | きもだめし 441 | きもち 442 | きもの 443 | きゃく 444 | きやく 445 | ぎゅうにく 446 | きよう 447 | きょうりゅう 448 | きらい 449 | きらく 450 | きりん 451 | きれい 452 | きれつ 453 | きろく 454 | ぎろん 455 | きわめる 456 | ぎんいろ 457 | きんかくじ 458 | きんじょ 459 | きんようび 460 | ぐあい 461 | くいず 462 | くうかん 463 | くうき 464 | くうぐん 465 | くうこう 466 | ぐうせい 467 | くうそう 468 | ぐうたら 469 | くうふく 470 | くうぼ 471 | くかん 472 | くきょう 473 | くげん 474 | ぐこう 475 | くさい 476 | くさき 477 | くさばな 478 | くさる 479 | くしゃみ 480 | くしょう 481 | くすのき 482 | くすりゆび 483 | くせげ 484 | くせん 485 | ぐたいてき 486 | くださる 487 | くたびれる 488 | くちこみ 489 | くちさき 490 | くつした 491 | ぐっすり 492 | くつろぐ 493 | くとうてん 494 | くどく 495 | くなん 496 | くねくね 497 | くのう 498 | くふう 499 | くみあわせ 500 | くみたてる 501 | くめる 502 | くやくしょ 503 | くらす 504 | くらべる 505 | くるま 506 | くれる 507 | くろう 508 | くわしい 509 | ぐんかん 510 | ぐんしょく 511 | ぐんたい 512 | ぐんて 513 | けあな 514 | けいかく 515 | けいけん 516 | けいこ 517 | けいさつ 518 | げいじゅつ 519 | けいたい 520 | げいのうじん 521 | けいれき 522 | けいろ 523 | けおとす 524 | けおりもの 525 | げきか 526 | げきげん 527 | げきだん 528 | げきちん 529 | げきとつ 530 | げきは 531 | げきやく 532 | げこう 533 | げこくじょう 534 | げざい 535 | けさき 536 | げざん 537 | けしき 538 | けしごむ 539 | けしょう 540 | げすと 541 | けたば 542 | けちゃっぷ 543 | けちらす 544 | けつあつ 545 | けつい 546 | けつえき 547 | けっこん 548 | けつじょ 549 | けっせき 550 | けってい 551 | けつまつ 552 | げつようび 553 | げつれい 554 | けつろん 555 | げどく 556 | けとばす 557 | けとる 558 | けなげ 559 | けなす 560 | けなみ 561 | けぬき 562 | げねつ 563 | けねん 564 | けはい 565 | げひん 566 | けぶかい 567 | げぼく 568 | けまり 569 | けみかる 570 | けむし 571 | けむり 572 | けもの 573 | けらい 574 | けろけろ 575 | けわしい 576 | けんい 577 | けんえつ 578 | けんお 579 | けんか 580 | げんき 581 | けんげん 582 | けんこう 583 | けんさく 584 | けんしゅう 585 | けんすう 586 | げんそう 587 | けんちく 588 | けんてい 589 | けんとう 590 | けんない 591 | けんにん 592 | げんぶつ 593 | けんま 594 | けんみん 595 | けんめい 596 | けんらん 597 | けんり 598 | こあくま 599 | こいぬ 600 | こいびと 601 | ごうい 602 | こうえん 603 | こうおん 604 | こうかん 605 | ごうきゅう 606 | ごうけい 607 | こうこう 608 | こうさい 609 | こうじ 610 | こうすい 611 | ごうせい 612 | こうそく 613 | こうたい 614 | こうちゃ 615 | こうつう 616 | こうてい 617 | こうどう 618 | こうない 619 | こうはい 620 | ごうほう 621 | ごうまん 622 | こうもく 623 | こうりつ 624 | こえる 625 | こおり 626 | ごかい 627 | ごがつ 628 | ごかん 629 | こくご 630 | こくさい 631 | こくとう 632 | こくない 633 | こくはく 634 | こぐま 635 | こけい 636 | こける 637 | ここのか 638 | こころ 639 | こさめ 640 | こしつ 641 | こすう 642 | こせい 643 | こせき 644 | こぜん 645 | こそだて 646 | こたい 647 | こたえる 648 | こたつ 649 | こちょう 650 | こっか 651 | こつこつ 652 | こつばん 653 | こつぶ 654 | こてい 655 | こてん 656 | ことがら 657 | ことし 658 | ことば 659 | ことり 660 | こなごな 661 | こねこね 662 | このまま 663 | このみ 664 | このよ 665 | ごはん 666 | こひつじ 667 | こふう 668 | こふん 669 | こぼれる 670 | ごまあぶら 671 | こまかい 672 | ごますり 673 | こまつな 674 | こまる 675 | こむぎこ 676 | こもじ 677 | こもち 678 | こもの 679 | こもん 680 | こやく 681 | こやま 682 | こゆう 683 | こゆび 684 | こよい 685 | こよう 686 | こりる 687 | これくしょん 688 | ころっけ 689 | こわもて 690 | こわれる 691 | こんいん 692 | こんかい 693 | こんき 694 | こんしゅう 695 | こんすい 696 | こんだて 697 | こんとん 698 | こんなん 699 | こんびに 700 | こんぽん 701 | こんまけ 702 | こんや 703 | こんれい 704 | こんわく 705 | ざいえき 706 | さいかい 707 | さいきん 708 | ざいげん 709 | ざいこ 710 | さいしょ 711 | さいせい 712 | ざいたく 713 | ざいちゅう 714 | さいてき 715 | ざいりょう 716 | さうな 717 | さかいし 718 | さがす 719 | さかな 720 | さかみち 721 | さがる 722 | さぎょう 723 | さくし 724 | さくひん 725 | さくら 726 | さこく 727 | さこつ 728 | さずかる 729 | ざせき 730 | さたん 731 | さつえい 732 | ざつおん 733 | ざっか 734 | ざつがく 735 | さっきょく 736 | ざっし 737 | さつじん 738 | ざっそう 739 | さつたば 740 | さつまいも 741 | さてい 742 | さといも 743 | さとう 744 | さとおや 745 | さとし 746 | さとる 747 | さのう 748 | さばく 749 | さびしい 750 | さべつ 751 | さほう 752 | さほど 753 | さます 754 | さみしい 755 | さみだれ 756 | さむけ 757 | さめる 758 | さやえんどう 759 | さゆう 760 | さよう 761 | さよく 762 | さらだ 763 | ざるそば 764 | さわやか 765 | さわる 766 | さんいん 767 | さんか 768 | さんきゃく 769 | さんこう 770 | さんさい 771 | ざんしょ 772 | さんすう 773 | さんせい 774 | さんそ 775 | さんち 776 | さんま 777 | さんみ 778 | さんらん 779 | しあい 780 | しあげ 781 | しあさって 782 | しあわせ 783 | しいく 784 | しいん 785 | しうち 786 | しえい 787 | しおけ 788 | しかい 789 | しかく 790 | じかん 791 | しごと 792 | しすう 793 | じだい 794 | したうけ 795 | したぎ 796 | したて 797 | したみ 798 | しちょう 799 | しちりん 800 | しっかり 801 | しつじ 802 | しつもん 803 | してい 804 | してき 805 | してつ 806 | じてん 807 | じどう 808 | しなぎれ 809 | しなもの 810 | しなん 811 | しねま 812 | しねん 813 | しのぐ 814 | しのぶ 815 | しはい 816 | しばかり 817 | しはつ 818 | しはらい 819 | しはん 820 | しひょう 821 | しふく 822 | じぶん 823 | しへい 824 | しほう 825 | しほん 826 | しまう 827 | しまる 828 | しみん 829 | しむける 830 | じむしょ 831 | しめい 832 | しめる 833 | しもん 834 | しゃいん 835 | しゃうん 836 | しゃおん 837 | じゃがいも 838 | しやくしょ 839 | しゃくほう 840 | しゃけん 841 | しゃこ 842 | しゃざい 843 | しゃしん 844 | しゃせん 845 | しゃそう 846 | しゃたい 847 | しゃちょう 848 | しゃっきん 849 | じゃま 850 | しゃりん 851 | しゃれい 852 | じゆう 853 | じゅうしょ 854 | しゅくはく 855 | じゅしん 856 | しゅっせき 857 | しゅみ 858 | しゅらば 859 | じゅんばん 860 | しょうかい 861 | しょくたく 862 | しょっけん 863 | しょどう 864 | しょもつ 865 | しらせる 866 | しらべる 867 | しんか 868 | しんこう 869 | じんじゃ 870 | しんせいじ 871 | しんちく 872 | しんりん 873 | すあげ 874 | すあし 875 | すあな 876 | ずあん 877 | すいえい 878 | すいか 879 | すいとう 880 | ずいぶん 881 | すいようび 882 | すうがく 883 | すうじつ 884 | すうせん 885 | すおどり 886 | すきま 887 | すくう 888 | すくない 889 | すける 890 | すごい 891 | すこし 892 | ずさん 893 | すずしい 894 | すすむ 895 | すすめる 896 | すっかり 897 | ずっしり 898 | ずっと 899 | すてき 900 | すてる 901 | すねる 902 | すのこ 903 | すはだ 904 | すばらしい 905 | ずひょう 906 | ずぶぬれ 907 | すぶり 908 | すふれ 909 | すべて 910 | すべる 911 | ずほう 912 | すぼん 913 | すまい 914 | すめし 915 | すもう 916 | すやき 917 | すらすら 918 | するめ 919 | すれちがう 920 | すろっと 921 | すわる 922 | すんぜん 923 | すんぽう 924 | せあぶら 925 | せいかつ 926 | せいげん 927 | せいじ 928 | せいよう 929 | せおう 930 | せかいかん 931 | せきにん 932 | せきむ 933 | せきゆ 934 | せきらんうん 935 | せけん 936 | せこう 937 | せすじ 938 | せたい 939 | せたけ 940 | せっかく 941 | せっきゃく 942 | ぜっく 943 | せっけん 944 | せっこつ 945 | せっさたくま 946 | せつぞく 947 | せつだん 948 | せつでん 949 | せっぱん 950 | せつび 951 | せつぶん 952 | せつめい 953 | せつりつ 954 | せなか 955 | せのび 956 | せはば 957 | せびろ 958 | せぼね 959 | せまい 960 | せまる 961 | せめる 962 | せもたれ 963 | せりふ 964 | ぜんあく 965 | せんい 966 | せんえい 967 | せんか 968 | せんきょ 969 | せんく 970 | せんげん 971 | ぜんご 972 | せんさい 973 | せんしゅ 974 | せんすい 975 | せんせい 976 | せんぞ 977 | せんたく 978 | せんちょう 979 | せんてい 980 | せんとう 981 | せんぬき 982 | せんねん 983 | せんぱい 984 | ぜんぶ 985 | ぜんぽう 986 | せんむ 987 | せんめんじょ 988 | せんもん 989 | せんやく 990 | せんゆう 991 | せんよう 992 | ぜんら 993 | ぜんりゃく 994 | せんれい 995 | せんろ 996 | そあく 997 | そいとげる 998 | そいね 999 | そうがんきょう 1000 | そうき 1001 | そうご 1002 | そうしん 1003 | そうだん 1004 | そうなん 1005 | そうび 1006 | そうめん 1007 | そうり 1008 | そえもの 1009 | そえん 1010 | そがい 1011 | そげき 1012 | そこう 1013 | そこそこ 1014 | そざい 1015 | そしな 1016 | そせい 1017 | そせん 1018 | そそぐ 1019 | そだてる 1020 | そつう 1021 | そつえん 1022 | そっかん 1023 | そつぎょう 1024 | そっけつ 1025 | そっこう 1026 | そっせん 1027 | そっと 1028 | そとがわ 1029 | そとづら 1030 | そなえる 1031 | そなた 1032 | そふぼ 1033 | そぼく 1034 | そぼろ 1035 | そまつ 1036 | そまる 1037 | そむく 1038 | そむりえ 1039 | そめる 1040 | そもそも 1041 | そよかぜ 1042 | そらまめ 1043 | そろう 1044 | そんかい 1045 | そんけい 1046 | そんざい 1047 | そんしつ 1048 | そんぞく 1049 | そんちょう 1050 | ぞんび 1051 | ぞんぶん 1052 | そんみん 1053 | たあい 1054 | たいいん 1055 | たいうん 1056 | たいえき 1057 | たいおう 1058 | だいがく 1059 | たいき 1060 | たいぐう 1061 | たいけん 1062 | たいこ 1063 | たいざい 1064 | だいじょうぶ 1065 | だいすき 1066 | たいせつ 1067 | たいそう 1068 | だいたい 1069 | たいちょう 1070 | たいてい 1071 | だいどころ 1072 | たいない 1073 | たいねつ 1074 | たいのう 1075 | たいはん 1076 | だいひょう 1077 | たいふう 1078 | たいへん 1079 | たいほ 1080 | たいまつばな 1081 | たいみんぐ 1082 | たいむ 1083 | たいめん 1084 | たいやき 1085 | たいよう 1086 | たいら 1087 | たいりょく 1088 | たいる 1089 | たいわん 1090 | たうえ 1091 | たえる 1092 | たおす 1093 | たおる 1094 | たおれる 1095 | たかい 1096 | たかね 1097 | たきび 1098 | たくさん 1099 | たこく 1100 | たこやき 1101 | たさい 1102 | たしざん 1103 | だじゃれ 1104 | たすける 1105 | たずさわる 1106 | たそがれ 1107 | たたかう 1108 | たたく 1109 | ただしい 1110 | たたみ 1111 | たちばな 1112 | だっかい 1113 | だっきゃく 1114 | だっこ 1115 | だっしゅつ 1116 | だったい 1117 | たてる 1118 | たとえる 1119 | たなばた 1120 | たにん 1121 | たぬき 1122 | たのしみ 1123 | たはつ 1124 | たぶん 1125 | たべる 1126 | たぼう 1127 | たまご 1128 | たまる 1129 | だむる 1130 | ためいき 1131 | ためす 1132 | ためる 1133 | たもつ 1134 | たやすい 1135 | たよる 1136 | たらす 1137 | たりきほんがん 1138 | たりょう 1139 | たりる 1140 | たると 1141 | たれる 1142 | たれんと 1143 | たろっと 1144 | たわむれる 1145 | だんあつ 1146 | たんい 1147 | たんおん 1148 | たんか 1149 | たんき 1150 | たんけん 1151 | たんご 1152 | たんさん 1153 | たんじょうび 1154 | だんせい 1155 | たんそく 1156 | たんたい 1157 | だんち 1158 | たんてい 1159 | たんとう 1160 | だんな 1161 | たんにん 1162 | だんねつ 1163 | たんのう 1164 | たんぴん 1165 | だんぼう 1166 | たんまつ 1167 | たんめい 1168 | だんれつ 1169 | だんろ 1170 | だんわ 1171 | ちあい 1172 | ちあん 1173 | ちいき 1174 | ちいさい 1175 | ちえん 1176 | ちかい 1177 | ちから 1178 | ちきゅう 1179 | ちきん 1180 | ちけいず 1181 | ちけん 1182 | ちこく 1183 | ちさい 1184 | ちしき 1185 | ちしりょう 1186 | ちせい 1187 | ちそう 1188 | ちたい 1189 | ちたん 1190 | ちちおや 1191 | ちつじょ 1192 | ちてき 1193 | ちてん 1194 | ちぬき 1195 | ちぬり 1196 | ちのう 1197 | ちひょう 1198 | ちへいせん 1199 | ちほう 1200 | ちまた 1201 | ちみつ 1202 | ちみどろ 1203 | ちめいど 1204 | ちゃんこなべ 1205 | ちゅうい 1206 | ちゆりょく 1207 | ちょうし 1208 | ちょさくけん 1209 | ちらし 1210 | ちらみ 1211 | ちりがみ 1212 | ちりょう 1213 | ちるど 1214 | ちわわ 1215 | ちんたい 1216 | ちんもく 1217 | ついか 1218 | ついたち 1219 | つうか 1220 | つうじょう 1221 | つうはん 1222 | つうわ 1223 | つかう 1224 | つかれる 1225 | つくね 1226 | つくる 1227 | つけね 1228 | つける 1229 | つごう 1230 | つたえる 1231 | つづく 1232 | つつじ 1233 | つつむ 1234 | つとめる 1235 | つながる 1236 | つなみ 1237 | つねづね 1238 | つのる 1239 | つぶす 1240 | つまらない 1241 | つまる 1242 | つみき 1243 | つめたい 1244 | つもり 1245 | つもる 1246 | つよい 1247 | つるぼ 1248 | つるみく 1249 | つわもの 1250 | つわり 1251 | てあし 1252 | てあて 1253 | てあみ 1254 | ていおん 1255 | ていか 1256 | ていき 1257 | ていけい 1258 | ていこく 1259 | ていさつ 1260 | ていし 1261 | ていせい 1262 | ていたい 1263 | ていど 1264 | ていねい 1265 | ていひょう 1266 | ていへん 1267 | ていぼう 1268 | てうち 1269 | ておくれ 1270 | てきとう 1271 | てくび 1272 | でこぼこ 1273 | てさぎょう 1274 | てさげ 1275 | てすり 1276 | てそう 1277 | てちがい 1278 | てちょう 1279 | てつがく 1280 | てつづき 1281 | でっぱ 1282 | てつぼう 1283 | てつや 1284 | でぬかえ 1285 | てぬき 1286 | てぬぐい 1287 | てのひら 1288 | てはい 1289 | てぶくろ 1290 | てふだ 1291 | てほどき 1292 | てほん 1293 | てまえ 1294 | てまきずし 1295 | てみじか 1296 | てみやげ 1297 | てらす 1298 | てれび 1299 | てわけ 1300 | てわたし 1301 | でんあつ 1302 | てんいん 1303 | てんかい 1304 | てんき 1305 | てんぐ 1306 | てんけん 1307 | てんごく 1308 | てんさい 1309 | てんし 1310 | てんすう 1311 | でんち 1312 | てんてき 1313 | てんとう 1314 | てんない 1315 | てんぷら 1316 | てんぼうだい 1317 | てんめつ 1318 | てんらんかい 1319 | でんりょく 1320 | でんわ 1321 | どあい 1322 | といれ 1323 | どうかん 1324 | とうきゅう 1325 | どうぐ 1326 | とうし 1327 | とうむぎ 1328 | とおい 1329 | とおか 1330 | とおく 1331 | とおす 1332 | とおる 1333 | とかい 1334 | とかす 1335 | ときおり 1336 | ときどき 1337 | とくい 1338 | とくしゅう 1339 | とくてん 1340 | とくに 1341 | とくべつ 1342 | とけい 1343 | とける 1344 | とこや 1345 | とさか 1346 | としょかん 1347 | とそう 1348 | とたん 1349 | とちゅう 1350 | とっきゅう 1351 | とっくん 1352 | とつぜん 1353 | とつにゅう 1354 | とどける 1355 | ととのえる 1356 | とない 1357 | となえる 1358 | となり 1359 | とのさま 1360 | とばす 1361 | どぶがわ 1362 | とほう 1363 | とまる 1364 | とめる 1365 | ともだち 1366 | ともる 1367 | どようび 1368 | とらえる 1369 | とんかつ 1370 | どんぶり 1371 | ないかく 1372 | ないこう 1373 | ないしょ 1374 | ないす 1375 | ないせん 1376 | ないそう 1377 | なおす 1378 | ながい 1379 | なくす 1380 | なげる 1381 | なこうど 1382 | なさけ 1383 | なたでここ 1384 | なっとう 1385 | なつやすみ 1386 | ななおし 1387 | なにごと 1388 | なにもの 1389 | なにわ 1390 | なのか 1391 | なふだ 1392 | なまいき 1393 | なまえ 1394 | なまみ 1395 | なみだ 1396 | なめらか 1397 | なめる 1398 | なやむ 1399 | ならう 1400 | ならび 1401 | ならぶ 1402 | なれる 1403 | なわとび 1404 | なわばり 1405 | にあう 1406 | にいがた 1407 | にうけ 1408 | におい 1409 | にかい 1410 | にがて 1411 | にきび 1412 | にくしみ 1413 | にくまん 1414 | にげる 1415 | にさんかたんそ 1416 | にしき 1417 | にせもの 1418 | にちじょう 1419 | にちようび 1420 | にっか 1421 | にっき 1422 | にっけい 1423 | にっこう 1424 | にっさん 1425 | にっしょく 1426 | にっすう 1427 | にっせき 1428 | にってい 1429 | になう 1430 | にほん 1431 | にまめ 1432 | にもつ 1433 | にやり 1434 | にゅういん 1435 | にりんしゃ 1436 | にわとり 1437 | にんい 1438 | にんか 1439 | にんき 1440 | にんげん 1441 | にんしき 1442 | にんずう 1443 | にんそう 1444 | にんたい 1445 | にんち 1446 | にんてい 1447 | にんにく 1448 | にんぷ 1449 | にんまり 1450 | にんむ 1451 | にんめい 1452 | にんよう 1453 | ぬいくぎ 1454 | ぬかす 1455 | ぬぐいとる 1456 | ぬぐう 1457 | ぬくもり 1458 | ぬすむ 1459 | ぬまえび 1460 | ぬめり 1461 | ぬらす 1462 | ぬんちゃく 1463 | ねあげ 1464 | ねいき 1465 | ねいる 1466 | ねいろ 1467 | ねぐせ 1468 | ねくたい 1469 | ねくら 1470 | ねこぜ 1471 | ねこむ 1472 | ねさげ 1473 | ねすごす 1474 | ねそべる 1475 | ねだん 1476 | ねつい 1477 | ねっしん 1478 | ねつぞう 1479 | ねったいぎょ 1480 | ねぶそく 1481 | ねふだ 1482 | ねぼう 1483 | ねほりはほり 1484 | ねまき 1485 | ねまわし 1486 | ねみみ 1487 | ねむい 1488 | ねむたい 1489 | ねもと 1490 | ねらう 1491 | ねわざ 1492 | ねんいり 1493 | ねんおし 1494 | ねんかん 1495 | ねんきん 1496 | ねんぐ 1497 | ねんざ 1498 | ねんし 1499 | ねんちゃく 1500 | ねんど 1501 | ねんぴ 1502 | ねんぶつ 1503 | ねんまつ 1504 | ねんりょう 1505 | ねんれい 1506 | のいず 1507 | のおづま 1508 | のがす 1509 | のきなみ 1510 | のこぎり 1511 | のこす 1512 | のこる 1513 | のせる 1514 | のぞく 1515 | のぞむ 1516 | のたまう 1517 | のちほど 1518 | のっく 1519 | のばす 1520 | のはら 1521 | のべる 1522 | のぼる 1523 | のみもの 1524 | のやま 1525 | のらいぬ 1526 | のらねこ 1527 | のりもの 1528 | のりゆき 1529 | のれん 1530 | のんき 1531 | ばあい 1532 | はあく 1533 | ばあさん 1534 | ばいか 1535 | ばいく 1536 | はいけん 1537 | はいご 1538 | はいしん 1539 | はいすい 1540 | はいせん 1541 | はいそう 1542 | はいち 1543 | ばいばい 1544 | はいれつ 1545 | はえる 1546 | はおる 1547 | はかい 1548 | ばかり 1549 | はかる 1550 | はくしゅ 1551 | はけん 1552 | はこぶ 1553 | はさみ 1554 | はさん 1555 | はしご 1556 | ばしょ 1557 | はしる 1558 | はせる 1559 | ぱそこん 1560 | はそん 1561 | はたん 1562 | はちみつ 1563 | はつおん 1564 | はっかく 1565 | はづき 1566 | はっきり 1567 | はっくつ 1568 | はっけん 1569 | はっこう 1570 | はっさん 1571 | はっしん 1572 | はったつ 1573 | はっちゅう 1574 | はってん 1575 | はっぴょう 1576 | はっぽう 1577 | はなす 1578 | はなび 1579 | はにかむ 1580 | はぶらし 1581 | はみがき 1582 | はむかう 1583 | はめつ 1584 | はやい 1585 | はやし 1586 | はらう 1587 | はろうぃん 1588 | はわい 1589 | はんい 1590 | はんえい 1591 | はんおん 1592 | はんかく 1593 | はんきょう 1594 | ばんぐみ 1595 | はんこ 1596 | はんしゃ 1597 | はんすう 1598 | はんだん 1599 | ぱんち 1600 | ぱんつ 1601 | はんてい 1602 | はんとし 1603 | はんのう 1604 | はんぱ 1605 | はんぶん 1606 | はんぺん 1607 | はんぼうき 1608 | はんめい 1609 | はんらん 1610 | はんろん 1611 | ひいき 1612 | ひうん 1613 | ひえる 1614 | ひかく 1615 | ひかり 1616 | ひかる 1617 | ひかん 1618 | ひくい 1619 | ひけつ 1620 | ひこうき 1621 | ひこく 1622 | ひさい 1623 | ひさしぶり 1624 | ひさん 1625 | びじゅつかん 1626 | ひしょ 1627 | ひそか 1628 | ひそむ 1629 | ひたむき 1630 | ひだり 1631 | ひたる 1632 | ひつぎ 1633 | ひっこし 1634 | ひっし 1635 | ひつじゅひん 1636 | ひっす 1637 | ひつぜん 1638 | ぴったり 1639 | ぴっちり 1640 | ひつよう 1641 | ひてい 1642 | ひとごみ 1643 | ひなまつり 1644 | ひなん 1645 | ひねる 1646 | ひはん 1647 | ひびく 1648 | ひひょう 1649 | ひほう 1650 | ひまわり 1651 | ひまん 1652 | ひみつ 1653 | ひめい 1654 | ひめじし 1655 | ひやけ 1656 | ひやす 1657 | ひよう 1658 | びょうき 1659 | ひらがな 1660 | ひらく 1661 | ひりつ 1662 | ひりょう 1663 | ひるま 1664 | ひるやすみ 1665 | ひれい 1666 | ひろい 1667 | ひろう 1668 | ひろき 1669 | ひろゆき 1670 | ひんかく 1671 | ひんけつ 1672 | ひんこん 1673 | ひんしゅ 1674 | ひんそう 1675 | ぴんち 1676 | ひんぱん 1677 | びんぼう 1678 | ふあん 1679 | ふいうち 1680 | ふうけい 1681 | ふうせん 1682 | ぷうたろう 1683 | ふうとう 1684 | ふうふ 1685 | ふえる 1686 | ふおん 1687 | ふかい 1688 | ふきん 1689 | ふくざつ 1690 | ふくぶくろ 1691 | ふこう 1692 | ふさい 1693 | ふしぎ 1694 | ふじみ 1695 | ふすま 1696 | ふせい 1697 | ふせぐ 1698 | ふそく 1699 | ぶたにく 1700 | ふたん 1701 | ふちょう 1702 | ふつう 1703 | ふつか 1704 | ふっかつ 1705 | ふっき 1706 | ふっこく 1707 | ぶどう 1708 | ふとる 1709 | ふとん 1710 | ふのう 1711 | ふはい 1712 | ふひょう 1713 | ふへん 1714 | ふまん 1715 | ふみん 1716 | ふめつ 1717 | ふめん 1718 | ふよう 1719 | ふりこ 1720 | ふりる 1721 | ふるい 1722 | ふんいき 1723 | ぶんがく 1724 | ぶんぐ 1725 | ふんしつ 1726 | ぶんせき 1727 | ふんそう 1728 | ぶんぽう 1729 | へいあん 1730 | へいおん 1731 | へいがい 1732 | へいき 1733 | へいげん 1734 | へいこう 1735 | へいさ 1736 | へいしゃ 1737 | へいせつ 1738 | へいそ 1739 | へいたく 1740 | へいてん 1741 | へいねつ 1742 | へいわ 1743 | へきが 1744 | へこむ 1745 | べにいろ 1746 | べにしょうが 1747 | へらす 1748 | へんかん 1749 | べんきょう 1750 | べんごし 1751 | へんさい 1752 | へんたい 1753 | べんり 1754 | ほあん 1755 | ほいく 1756 | ぼうぎょ 1757 | ほうこく 1758 | ほうそう 1759 | ほうほう 1760 | ほうもん 1761 | ほうりつ 1762 | ほえる 1763 | ほおん 1764 | ほかん 1765 | ほきょう 1766 | ぼきん 1767 | ほくろ 1768 | ほけつ 1769 | ほけん 1770 | ほこう 1771 | ほこる 1772 | ほしい 1773 | ほしつ 1774 | ほしゅ 1775 | ほしょう 1776 | ほせい 1777 | ほそい 1778 | ほそく 1779 | ほたて 1780 | ほたる 1781 | ぽちぶくろ 1782 | ほっきょく 1783 | ほっさ 1784 | ほったん 1785 | ほとんど 1786 | ほめる 1787 | ほんい 1788 | ほんき 1789 | ほんけ 1790 | ほんしつ 1791 | ほんやく 1792 | まいにち 1793 | まかい 1794 | まかせる 1795 | まがる 1796 | まける 1797 | まこと 1798 | まさつ 1799 | まじめ 1800 | ますく 1801 | まぜる 1802 | まつり 1803 | まとめ 1804 | まなぶ 1805 | まぬけ 1806 | まねく 1807 | まほう 1808 | まもる 1809 | まゆげ 1810 | まよう 1811 | まろやか 1812 | まわす 1813 | まわり 1814 | まわる 1815 | まんが 1816 | まんきつ 1817 | まんぞく 1818 | まんなか 1819 | みいら 1820 | みうち 1821 | みえる 1822 | みがく 1823 | みかた 1824 | みかん 1825 | みけん 1826 | みこん 1827 | みじかい 1828 | みすい 1829 | みすえる 1830 | みせる 1831 | みっか 1832 | みつかる 1833 | みつける 1834 | みてい 1835 | みとめる 1836 | みなと 1837 | みなみかさい 1838 | みねらる 1839 | みのう 1840 | みのがす 1841 | みほん 1842 | みもと 1843 | みやげ 1844 | みらい 1845 | みりょく 1846 | みわく 1847 | みんか 1848 | みんぞく 1849 | むいか 1850 | むえき 1851 | むえん 1852 | むかい 1853 | むかう 1854 | むかえ 1855 | むかし 1856 | むぎちゃ 1857 | むける 1858 | むげん 1859 | むさぼる 1860 | むしあつい 1861 | むしば 1862 | むじゅん 1863 | むしろ 1864 | むすう 1865 | むすこ 1866 | むすぶ 1867 | むすめ 1868 | むせる 1869 | むせん 1870 | むちゅう 1871 | むなしい 1872 | むのう 1873 | むやみ 1874 | むよう 1875 | むらさき 1876 | むりょう 1877 | むろん 1878 | めいあん 1879 | めいうん 1880 | めいえん 1881 | めいかく 1882 | めいきょく 1883 | めいさい 1884 | めいし 1885 | めいそう 1886 | めいぶつ 1887 | めいれい 1888 | めいわく 1889 | めぐまれる 1890 | めざす 1891 | めした 1892 | めずらしい 1893 | めだつ 1894 | めまい 1895 | めやす 1896 | めんきょ 1897 | めんせき 1898 | めんどう 1899 | もうしあげる 1900 | もうどうけん 1901 | もえる 1902 | もくし 1903 | もくてき 1904 | もくようび 1905 | もちろん 1906 | もどる 1907 | もらう 1908 | もんく 1909 | もんだい 1910 | やおや 1911 | やける 1912 | やさい 1913 | やさしい 1914 | やすい 1915 | やすたろう 1916 | やすみ 1917 | やせる 1918 | やそう 1919 | やたい 1920 | やちん 1921 | やっと 1922 | やっぱり 1923 | やぶる 1924 | やめる 1925 | ややこしい 1926 | やよい 1927 | やわらかい 1928 | ゆうき 1929 | ゆうびんきょく 1930 | ゆうべ 1931 | ゆうめい 1932 | ゆけつ 1933 | ゆしゅつ 1934 | ゆせん 1935 | ゆそう 1936 | ゆたか 1937 | ゆちゃく 1938 | ゆでる 1939 | ゆにゅう 1940 | ゆびわ 1941 | ゆらい 1942 | ゆれる 1943 | ようい 1944 | ようか 1945 | ようきゅう 1946 | ようじ 1947 | ようす 1948 | ようちえん 1949 | よかぜ 1950 | よかん 1951 | よきん 1952 | よくせい 1953 | よくぼう 1954 | よけい 1955 | よごれる 1956 | よさん 1957 | よしゅう 1958 | よそう 1959 | よそく 1960 | よっか 1961 | よてい 1962 | よどがわく 1963 | よねつ 1964 | よやく 1965 | よゆう 1966 | よろこぶ 1967 | よろしい 1968 | らいう 1969 | らくがき 1970 | らくご 1971 | らくさつ 1972 | らくだ 1973 | らしんばん 1974 | らせん 1975 | らぞく 1976 | らたい 1977 | らっか 1978 | られつ 1979 | りえき 1980 | りかい 1981 | りきさく 1982 | りきせつ 1983 | りくぐん 1984 | りくつ 1985 | りけん 1986 | りこう 1987 | りせい 1988 | りそう 1989 | りそく 1990 | りてん 1991 | りねん 1992 | りゆう 1993 | りゅうがく 1994 | りよう 1995 | りょうり 1996 | りょかん 1997 | りょくちゃ 1998 | りょこう 1999 | りりく 2000 | りれき 2001 | りろん 2002 | りんご 2003 | るいけい 2004 | るいさい 2005 | るいじ 2006 | るいせき 2007 | るすばん 2008 | るりがわら 2009 | れいかん 2010 | れいぎ 2011 | れいせい 2012 | れいぞうこ 2013 | れいとう 2014 | れいぼう 2015 | れきし 2016 | れきだい 2017 | れんあい 2018 | れんけい 2019 | れんこん 2020 | れんさい 2021 | れんしゅう 2022 | れんぞく 2023 | れんらく 2024 | ろうか 2025 | ろうご 2026 | ろうじん 2027 | ろうそく 2028 | ろくが 2029 | ろこつ 2030 | ろじうら 2031 | ろしゅつ 2032 | ろせん 2033 | ろてん 2034 | ろめん 2035 | ろれつ 2036 | ろんぎ 2037 | ろんぱ 2038 | ろんぶん 2039 | ろんり 2040 | わかす 2041 | わかめ 2042 | わかやま 2043 | わかれる 2044 | わしつ 2045 | わじまし 2046 | わすれもの 2047 | わらう 2048 | われる -------------------------------------------------------------------------------- /src/main/resources/wordlists/korean.txt: -------------------------------------------------------------------------------- 1 | 가격 2 | 가끔 3 | 가난 4 | 가능 5 | 가득 6 | 가르침 7 | 가뭄 8 | 가방 9 | 가상 10 | 가슴 11 | 가운데 12 | 가을 13 | 가이드 14 | 가입 15 | 가장 16 | 가정 17 | 가족 18 | 가죽 19 | 각오 20 | 각자 21 | 간격 22 | 간부 23 | 간섭 24 | 간장 25 | 간접 26 | 간판 27 | 갈등 28 | 갈비 29 | 갈색 30 | 갈증 31 | 감각 32 | 감기 33 | 감소 34 | 감수성 35 | 감자 36 | 감정 37 | 갑자기 38 | 강남 39 | 강당 40 | 강도 41 | 강력히 42 | 강변 43 | 강북 44 | 강사 45 | 강수량 46 | 강아지 47 | 강원도 48 | 강의 49 | 강제 50 | 강조 51 | 같이 52 | 개구리 53 | 개나리 54 | 개방 55 | 개별 56 | 개선 57 | 개성 58 | 개인 59 | 객관적 60 | 거실 61 | 거액 62 | 거울 63 | 거짓 64 | 거품 65 | 걱정 66 | 건강 67 | 건물 68 | 건설 69 | 건조 70 | 건축 71 | 걸음 72 | 검사 73 | 검토 74 | 게시판 75 | 게임 76 | 겨울 77 | 견해 78 | 결과 79 | 결국 80 | 결론 81 | 결석 82 | 결승 83 | 결심 84 | 결정 85 | 결혼 86 | 경계 87 | 경고 88 | 경기 89 | 경력 90 | 경복궁 91 | 경비 92 | 경상도 93 | 경영 94 | 경우 95 | 경쟁 96 | 경제 97 | 경주 98 | 경찰 99 | 경치 100 | 경향 101 | 경험 102 | 계곡 103 | 계단 104 | 계란 105 | 계산 106 | 계속 107 | 계약 108 | 계절 109 | 계층 110 | 계획 111 | 고객 112 | 고구려 113 | 고궁 114 | 고급 115 | 고등학생 116 | 고무신 117 | 고민 118 | 고양이 119 | 고장 120 | 고전 121 | 고집 122 | 고춧가루 123 | 고통 124 | 고향 125 | 곡식 126 | 골목 127 | 골짜기 128 | 골프 129 | 공간 130 | 공개 131 | 공격 132 | 공군 133 | 공급 134 | 공기 135 | 공동 136 | 공무원 137 | 공부 138 | 공사 139 | 공식 140 | 공업 141 | 공연 142 | 공원 143 | 공장 144 | 공짜 145 | 공책 146 | 공통 147 | 공포 148 | 공항 149 | 공휴일 150 | 과목 151 | 과일 152 | 과장 153 | 과정 154 | 과학 155 | 관객 156 | 관계 157 | 관광 158 | 관념 159 | 관람 160 | 관련 161 | 관리 162 | 관습 163 | 관심 164 | 관점 165 | 관찰 166 | 광경 167 | 광고 168 | 광장 169 | 광주 170 | 괴로움 171 | 굉장히 172 | 교과서 173 | 교문 174 | 교복 175 | 교실 176 | 교양 177 | 교육 178 | 교장 179 | 교직 180 | 교통 181 | 교환 182 | 교훈 183 | 구경 184 | 구름 185 | 구멍 186 | 구별 187 | 구분 188 | 구석 189 | 구성 190 | 구속 191 | 구역 192 | 구입 193 | 구청 194 | 구체적 195 | 국가 196 | 국기 197 | 국내 198 | 국립 199 | 국물 200 | 국민 201 | 국수 202 | 국어 203 | 국왕 204 | 국적 205 | 국제 206 | 국회 207 | 군대 208 | 군사 209 | 군인 210 | 궁극적 211 | 권리 212 | 권위 213 | 권투 214 | 귀국 215 | 귀신 216 | 규정 217 | 규칙 218 | 균형 219 | 그날 220 | 그냥 221 | 그늘 222 | 그러나 223 | 그룹 224 | 그릇 225 | 그림 226 | 그제서야 227 | 그토록 228 | 극복 229 | 극히 230 | 근거 231 | 근교 232 | 근래 233 | 근로 234 | 근무 235 | 근본 236 | 근원 237 | 근육 238 | 근처 239 | 글씨 240 | 글자 241 | 금강산 242 | 금고 243 | 금년 244 | 금메달 245 | 금액 246 | 금연 247 | 금요일 248 | 금지 249 | 긍정적 250 | 기간 251 | 기관 252 | 기념 253 | 기능 254 | 기독교 255 | 기둥 256 | 기록 257 | 기름 258 | 기법 259 | 기본 260 | 기분 261 | 기쁨 262 | 기숙사 263 | 기술 264 | 기억 265 | 기업 266 | 기온 267 | 기운 268 | 기원 269 | 기적 270 | 기준 271 | 기침 272 | 기혼 273 | 기획 274 | 긴급 275 | 긴장 276 | 길이 277 | 김밥 278 | 김치 279 | 김포공항 280 | 깍두기 281 | 깜빡 282 | 깨달음 283 | 깨소금 284 | 껍질 285 | 꼭대기 286 | 꽃잎 287 | 나들이 288 | 나란히 289 | 나머지 290 | 나물 291 | 나침반 292 | 나흘 293 | 낙엽 294 | 난방 295 | 날개 296 | 날씨 297 | 날짜 298 | 남녀 299 | 남대문 300 | 남매 301 | 남산 302 | 남자 303 | 남편 304 | 남학생 305 | 낭비 306 | 낱말 307 | 내년 308 | 내용 309 | 내일 310 | 냄비 311 | 냄새 312 | 냇물 313 | 냉동 314 | 냉면 315 | 냉방 316 | 냉장고 317 | 넥타이 318 | 넷째 319 | 노동 320 | 노란색 321 | 노력 322 | 노인 323 | 녹음 324 | 녹차 325 | 녹화 326 | 논리 327 | 논문 328 | 논쟁 329 | 놀이 330 | 농구 331 | 농담 332 | 농민 333 | 농부 334 | 농업 335 | 농장 336 | 농촌 337 | 높이 338 | 눈동자 339 | 눈물 340 | 눈썹 341 | 뉴욕 342 | 느낌 343 | 늑대 344 | 능동적 345 | 능력 346 | 다방 347 | 다양성 348 | 다음 349 | 다이어트 350 | 다행 351 | 단계 352 | 단골 353 | 단독 354 | 단맛 355 | 단순 356 | 단어 357 | 단위 358 | 단점 359 | 단체 360 | 단추 361 | 단편 362 | 단풍 363 | 달걀 364 | 달러 365 | 달력 366 | 달리 367 | 닭고기 368 | 담당 369 | 담배 370 | 담요 371 | 담임 372 | 답변 373 | 답장 374 | 당근 375 | 당분간 376 | 당연히 377 | 당장 378 | 대규모 379 | 대낮 380 | 대단히 381 | 대답 382 | 대도시 383 | 대략 384 | 대량 385 | 대륙 386 | 대문 387 | 대부분 388 | 대신 389 | 대응 390 | 대장 391 | 대전 392 | 대접 393 | 대중 394 | 대책 395 | 대출 396 | 대충 397 | 대통령 398 | 대학 399 | 대한민국 400 | 대합실 401 | 대형 402 | 덩어리 403 | 데이트 404 | 도대체 405 | 도덕 406 | 도둑 407 | 도망 408 | 도서관 409 | 도심 410 | 도움 411 | 도입 412 | 도자기 413 | 도저히 414 | 도전 415 | 도중 416 | 도착 417 | 독감 418 | 독립 419 | 독서 420 | 독일 421 | 독창적 422 | 동화책 423 | 뒷모습 424 | 뒷산 425 | 딸아이 426 | 마누라 427 | 마늘 428 | 마당 429 | 마라톤 430 | 마련 431 | 마무리 432 | 마사지 433 | 마약 434 | 마요네즈 435 | 마을 436 | 마음 437 | 마이크 438 | 마중 439 | 마지막 440 | 마찬가지 441 | 마찰 442 | 마흔 443 | 막걸리 444 | 막내 445 | 막상 446 | 만남 447 | 만두 448 | 만세 449 | 만약 450 | 만일 451 | 만점 452 | 만족 453 | 만화 454 | 많이 455 | 말기 456 | 말씀 457 | 말투 458 | 맘대로 459 | 망원경 460 | 매년 461 | 매달 462 | 매력 463 | 매번 464 | 매스컴 465 | 매일 466 | 매장 467 | 맥주 468 | 먹이 469 | 먼저 470 | 먼지 471 | 멀리 472 | 메일 473 | 며느리 474 | 며칠 475 | 면담 476 | 멸치 477 | 명단 478 | 명령 479 | 명예 480 | 명의 481 | 명절 482 | 명칭 483 | 명함 484 | 모금 485 | 모니터 486 | 모델 487 | 모든 488 | 모범 489 | 모습 490 | 모양 491 | 모임 492 | 모조리 493 | 모집 494 | 모퉁이 495 | 목걸이 496 | 목록 497 | 목사 498 | 목소리 499 | 목숨 500 | 목적 501 | 목표 502 | 몰래 503 | 몸매 504 | 몸무게 505 | 몸살 506 | 몸속 507 | 몸짓 508 | 몸통 509 | 몹시 510 | 무관심 511 | 무궁화 512 | 무더위 513 | 무덤 514 | 무릎 515 | 무슨 516 | 무엇 517 | 무역 518 | 무용 519 | 무조건 520 | 무지개 521 | 무척 522 | 문구 523 | 문득 524 | 문법 525 | 문서 526 | 문제 527 | 문학 528 | 문화 529 | 물가 530 | 물건 531 | 물결 532 | 물고기 533 | 물론 534 | 물리학 535 | 물음 536 | 물질 537 | 물체 538 | 미국 539 | 미디어 540 | 미사일 541 | 미술 542 | 미역 543 | 미용실 544 | 미움 545 | 미인 546 | 미팅 547 | 미혼 548 | 민간 549 | 민족 550 | 민주 551 | 믿음 552 | 밀가루 553 | 밀리미터 554 | 밑바닥 555 | 바가지 556 | 바구니 557 | 바나나 558 | 바늘 559 | 바닥 560 | 바닷가 561 | 바람 562 | 바이러스 563 | 바탕 564 | 박물관 565 | 박사 566 | 박수 567 | 반대 568 | 반드시 569 | 반말 570 | 반발 571 | 반성 572 | 반응 573 | 반장 574 | 반죽 575 | 반지 576 | 반찬 577 | 받침 578 | 발가락 579 | 발걸음 580 | 발견 581 | 발달 582 | 발레 583 | 발목 584 | 발바닥 585 | 발생 586 | 발음 587 | 발자국 588 | 발전 589 | 발톱 590 | 발표 591 | 밤하늘 592 | 밥그릇 593 | 밥맛 594 | 밥상 595 | 밥솥 596 | 방금 597 | 방면 598 | 방문 599 | 방바닥 600 | 방법 601 | 방송 602 | 방식 603 | 방안 604 | 방울 605 | 방지 606 | 방학 607 | 방해 608 | 방향 609 | 배경 610 | 배꼽 611 | 배달 612 | 배드민턴 613 | 백두산 614 | 백색 615 | 백성 616 | 백인 617 | 백제 618 | 백화점 619 | 버릇 620 | 버섯 621 | 버튼 622 | 번개 623 | 번역 624 | 번지 625 | 번호 626 | 벌금 627 | 벌레 628 | 벌써 629 | 범위 630 | 범인 631 | 범죄 632 | 법률 633 | 법원 634 | 법적 635 | 법칙 636 | 베이징 637 | 벨트 638 | 변경 639 | 변동 640 | 변명 641 | 변신 642 | 변호사 643 | 변화 644 | 별도 645 | 별명 646 | 별일 647 | 병실 648 | 병아리 649 | 병원 650 | 보관 651 | 보너스 652 | 보라색 653 | 보람 654 | 보름 655 | 보상 656 | 보안 657 | 보자기 658 | 보장 659 | 보전 660 | 보존 661 | 보통 662 | 보편적 663 | 보험 664 | 복도 665 | 복사 666 | 복숭아 667 | 복습 668 | 볶음 669 | 본격적 670 | 본래 671 | 본부 672 | 본사 673 | 본성 674 | 본인 675 | 본질 676 | 볼펜 677 | 봉사 678 | 봉지 679 | 봉투 680 | 부근 681 | 부끄러움 682 | 부담 683 | 부동산 684 | 부문 685 | 부분 686 | 부산 687 | 부상 688 | 부엌 689 | 부인 690 | 부작용 691 | 부장 692 | 부정 693 | 부족 694 | 부지런히 695 | 부친 696 | 부탁 697 | 부품 698 | 부회장 699 | 북부 700 | 북한 701 | 분노 702 | 분량 703 | 분리 704 | 분명 705 | 분석 706 | 분야 707 | 분위기 708 | 분필 709 | 분홍색 710 | 불고기 711 | 불과 712 | 불교 713 | 불꽃 714 | 불만 715 | 불법 716 | 불빛 717 | 불안 718 | 불이익 719 | 불행 720 | 브랜드 721 | 비극 722 | 비난 723 | 비닐 724 | 비둘기 725 | 비디오 726 | 비로소 727 | 비만 728 | 비명 729 | 비밀 730 | 비바람 731 | 비빔밥 732 | 비상 733 | 비용 734 | 비율 735 | 비중 736 | 비타민 737 | 비판 738 | 빌딩 739 | 빗물 740 | 빗방울 741 | 빗줄기 742 | 빛깔 743 | 빨간색 744 | 빨래 745 | 빨리 746 | 사건 747 | 사계절 748 | 사나이 749 | 사냥 750 | 사람 751 | 사랑 752 | 사립 753 | 사모님 754 | 사물 755 | 사방 756 | 사상 757 | 사생활 758 | 사설 759 | 사슴 760 | 사실 761 | 사업 762 | 사용 763 | 사월 764 | 사장 765 | 사전 766 | 사진 767 | 사촌 768 | 사춘기 769 | 사탕 770 | 사투리 771 | 사흘 772 | 산길 773 | 산부인과 774 | 산업 775 | 산책 776 | 살림 777 | 살인 778 | 살짝 779 | 삼계탕 780 | 삼국 781 | 삼십 782 | 삼월 783 | 삼촌 784 | 상관 785 | 상금 786 | 상대 787 | 상류 788 | 상반기 789 | 상상 790 | 상식 791 | 상업 792 | 상인 793 | 상자 794 | 상점 795 | 상처 796 | 상추 797 | 상태 798 | 상표 799 | 상품 800 | 상황 801 | 새벽 802 | 색깔 803 | 색연필 804 | 생각 805 | 생명 806 | 생물 807 | 생방송 808 | 생산 809 | 생선 810 | 생신 811 | 생일 812 | 생활 813 | 서랍 814 | 서른 815 | 서명 816 | 서민 817 | 서비스 818 | 서양 819 | 서울 820 | 서적 821 | 서점 822 | 서쪽 823 | 서클 824 | 석사 825 | 석유 826 | 선거 827 | 선물 828 | 선배 829 | 선생 830 | 선수 831 | 선원 832 | 선장 833 | 선전 834 | 선택 835 | 선풍기 836 | 설거지 837 | 설날 838 | 설렁탕 839 | 설명 840 | 설문 841 | 설사 842 | 설악산 843 | 설치 844 | 설탕 845 | 섭씨 846 | 성공 847 | 성당 848 | 성명 849 | 성별 850 | 성인 851 | 성장 852 | 성적 853 | 성질 854 | 성함 855 | 세금 856 | 세미나 857 | 세상 858 | 세월 859 | 세종대왕 860 | 세탁 861 | 센터 862 | 센티미터 863 | 셋째 864 | 소규모 865 | 소극적 866 | 소금 867 | 소나기 868 | 소년 869 | 소득 870 | 소망 871 | 소문 872 | 소설 873 | 소속 874 | 소아과 875 | 소용 876 | 소원 877 | 소음 878 | 소중히 879 | 소지품 880 | 소질 881 | 소풍 882 | 소형 883 | 속담 884 | 속도 885 | 속옷 886 | 손가락 887 | 손길 888 | 손녀 889 | 손님 890 | 손등 891 | 손목 892 | 손뼉 893 | 손실 894 | 손질 895 | 손톱 896 | 손해 897 | 솔직히 898 | 솜씨 899 | 송아지 900 | 송이 901 | 송편 902 | 쇠고기 903 | 쇼핑 904 | 수건 905 | 수년 906 | 수단 907 | 수돗물 908 | 수동적 909 | 수면 910 | 수명 911 | 수박 912 | 수상 913 | 수석 914 | 수술 915 | 수시로 916 | 수업 917 | 수염 918 | 수영 919 | 수입 920 | 수준 921 | 수집 922 | 수출 923 | 수컷 924 | 수필 925 | 수학 926 | 수험생 927 | 수화기 928 | 숙녀 929 | 숙소 930 | 숙제 931 | 순간 932 | 순서 933 | 순수 934 | 순식간 935 | 순위 936 | 숟가락 937 | 술병 938 | 술집 939 | 숫자 940 | 스님 941 | 스물 942 | 스스로 943 | 스승 944 | 스웨터 945 | 스위치 946 | 스케이트 947 | 스튜디오 948 | 스트레스 949 | 스포츠 950 | 슬쩍 951 | 슬픔 952 | 습관 953 | 습기 954 | 승객 955 | 승리 956 | 승부 957 | 승용차 958 | 승진 959 | 시각 960 | 시간 961 | 시골 962 | 시금치 963 | 시나리오 964 | 시댁 965 | 시리즈 966 | 시멘트 967 | 시민 968 | 시부모 969 | 시선 970 | 시설 971 | 시스템 972 | 시아버지 973 | 시어머니 974 | 시월 975 | 시인 976 | 시일 977 | 시작 978 | 시장 979 | 시절 980 | 시점 981 | 시중 982 | 시즌 983 | 시집 984 | 시청 985 | 시합 986 | 시험 987 | 식구 988 | 식기 989 | 식당 990 | 식량 991 | 식료품 992 | 식물 993 | 식빵 994 | 식사 995 | 식생활 996 | 식초 997 | 식탁 998 | 식품 999 | 신고 1000 | 신규 1001 | 신념 1002 | 신문 1003 | 신발 1004 | 신비 1005 | 신사 1006 | 신세 1007 | 신용 1008 | 신제품 1009 | 신청 1010 | 신체 1011 | 신화 1012 | 실감 1013 | 실내 1014 | 실력 1015 | 실례 1016 | 실망 1017 | 실수 1018 | 실습 1019 | 실시 1020 | 실장 1021 | 실정 1022 | 실질적 1023 | 실천 1024 | 실체 1025 | 실컷 1026 | 실태 1027 | 실패 1028 | 실험 1029 | 실현 1030 | 심리 1031 | 심부름 1032 | 심사 1033 | 심장 1034 | 심정 1035 | 심판 1036 | 쌍둥이 1037 | 씨름 1038 | 씨앗 1039 | 아가씨 1040 | 아나운서 1041 | 아드님 1042 | 아들 1043 | 아쉬움 1044 | 아스팔트 1045 | 아시아 1046 | 아울러 1047 | 아저씨 1048 | 아줌마 1049 | 아직 1050 | 아침 1051 | 아파트 1052 | 아프리카 1053 | 아픔 1054 | 아홉 1055 | 아흔 1056 | 악기 1057 | 악몽 1058 | 악수 1059 | 안개 1060 | 안경 1061 | 안과 1062 | 안내 1063 | 안녕 1064 | 안동 1065 | 안방 1066 | 안부 1067 | 안주 1068 | 알루미늄 1069 | 알코올 1070 | 암시 1071 | 암컷 1072 | 압력 1073 | 앞날 1074 | 앞문 1075 | 애인 1076 | 애정 1077 | 액수 1078 | 앨범 1079 | 야간 1080 | 야단 1081 | 야옹 1082 | 약간 1083 | 약국 1084 | 약속 1085 | 약수 1086 | 약점 1087 | 약품 1088 | 약혼녀 1089 | 양념 1090 | 양력 1091 | 양말 1092 | 양배추 1093 | 양주 1094 | 양파 1095 | 어둠 1096 | 어려움 1097 | 어른 1098 | 어젯밤 1099 | 어쨌든 1100 | 어쩌다가 1101 | 어쩐지 1102 | 언니 1103 | 언덕 1104 | 언론 1105 | 언어 1106 | 얼굴 1107 | 얼른 1108 | 얼음 1109 | 얼핏 1110 | 엄마 1111 | 업무 1112 | 업종 1113 | 업체 1114 | 엉덩이 1115 | 엉망 1116 | 엉터리 1117 | 엊그제 1118 | 에너지 1119 | 에어컨 1120 | 엔진 1121 | 여건 1122 | 여고생 1123 | 여관 1124 | 여군 1125 | 여권 1126 | 여대생 1127 | 여덟 1128 | 여동생 1129 | 여든 1130 | 여론 1131 | 여름 1132 | 여섯 1133 | 여성 1134 | 여왕 1135 | 여인 1136 | 여전히 1137 | 여직원 1138 | 여학생 1139 | 여행 1140 | 역사 1141 | 역시 1142 | 역할 1143 | 연결 1144 | 연구 1145 | 연극 1146 | 연기 1147 | 연락 1148 | 연설 1149 | 연세 1150 | 연속 1151 | 연습 1152 | 연애 1153 | 연예인 1154 | 연인 1155 | 연장 1156 | 연주 1157 | 연출 1158 | 연필 1159 | 연합 1160 | 연휴 1161 | 열기 1162 | 열매 1163 | 열쇠 1164 | 열심히 1165 | 열정 1166 | 열차 1167 | 열흘 1168 | 염려 1169 | 엽서 1170 | 영국 1171 | 영남 1172 | 영상 1173 | 영양 1174 | 영역 1175 | 영웅 1176 | 영원히 1177 | 영하 1178 | 영향 1179 | 영혼 1180 | 영화 1181 | 옆구리 1182 | 옆방 1183 | 옆집 1184 | 예감 1185 | 예금 1186 | 예방 1187 | 예산 1188 | 예상 1189 | 예선 1190 | 예술 1191 | 예습 1192 | 예식장 1193 | 예약 1194 | 예전 1195 | 예절 1196 | 예정 1197 | 예컨대 1198 | 옛날 1199 | 오늘 1200 | 오락 1201 | 오랫동안 1202 | 오렌지 1203 | 오로지 1204 | 오른발 1205 | 오븐 1206 | 오십 1207 | 오염 1208 | 오월 1209 | 오전 1210 | 오직 1211 | 오징어 1212 | 오페라 1213 | 오피스텔 1214 | 오히려 1215 | 옥상 1216 | 옥수수 1217 | 온갖 1218 | 온라인 1219 | 온몸 1220 | 온종일 1221 | 온통 1222 | 올가을 1223 | 올림픽 1224 | 올해 1225 | 옷차림 1226 | 와이셔츠 1227 | 와인 1228 | 완성 1229 | 완전 1230 | 왕비 1231 | 왕자 1232 | 왜냐하면 1233 | 왠지 1234 | 외갓집 1235 | 외국 1236 | 외로움 1237 | 외삼촌 1238 | 외출 1239 | 외침 1240 | 외할머니 1241 | 왼발 1242 | 왼손 1243 | 왼쪽 1244 | 요금 1245 | 요일 1246 | 요즘 1247 | 요청 1248 | 용기 1249 | 용서 1250 | 용어 1251 | 우산 1252 | 우선 1253 | 우승 1254 | 우연히 1255 | 우정 1256 | 우체국 1257 | 우편 1258 | 운동 1259 | 운명 1260 | 운반 1261 | 운전 1262 | 운행 1263 | 울산 1264 | 울음 1265 | 움직임 1266 | 웃어른 1267 | 웃음 1268 | 워낙 1269 | 원고 1270 | 원래 1271 | 원서 1272 | 원숭이 1273 | 원인 1274 | 원장 1275 | 원피스 1276 | 월급 1277 | 월드컵 1278 | 월세 1279 | 월요일 1280 | 웨이터 1281 | 위반 1282 | 위법 1283 | 위성 1284 | 위원 1285 | 위험 1286 | 위협 1287 | 윗사람 1288 | 유난히 1289 | 유럽 1290 | 유명 1291 | 유물 1292 | 유산 1293 | 유적 1294 | 유치원 1295 | 유학 1296 | 유행 1297 | 유형 1298 | 육군 1299 | 육상 1300 | 육십 1301 | 육체 1302 | 은행 1303 | 음력 1304 | 음료 1305 | 음반 1306 | 음성 1307 | 음식 1308 | 음악 1309 | 음주 1310 | 의견 1311 | 의논 1312 | 의문 1313 | 의복 1314 | 의식 1315 | 의심 1316 | 의외로 1317 | 의욕 1318 | 의원 1319 | 의학 1320 | 이것 1321 | 이곳 1322 | 이념 1323 | 이놈 1324 | 이달 1325 | 이대로 1326 | 이동 1327 | 이렇게 1328 | 이력서 1329 | 이론적 1330 | 이름 1331 | 이민 1332 | 이발소 1333 | 이별 1334 | 이불 1335 | 이빨 1336 | 이상 1337 | 이성 1338 | 이슬 1339 | 이야기 1340 | 이용 1341 | 이웃 1342 | 이월 1343 | 이윽고 1344 | 이익 1345 | 이전 1346 | 이중 1347 | 이튿날 1348 | 이틀 1349 | 이혼 1350 | 인간 1351 | 인격 1352 | 인공 1353 | 인구 1354 | 인근 1355 | 인기 1356 | 인도 1357 | 인류 1358 | 인물 1359 | 인생 1360 | 인쇄 1361 | 인연 1362 | 인원 1363 | 인재 1364 | 인종 1365 | 인천 1366 | 인체 1367 | 인터넷 1368 | 인하 1369 | 인형 1370 | 일곱 1371 | 일기 1372 | 일단 1373 | 일대 1374 | 일등 1375 | 일반 1376 | 일본 1377 | 일부 1378 | 일상 1379 | 일생 1380 | 일손 1381 | 일요일 1382 | 일월 1383 | 일정 1384 | 일종 1385 | 일주일 1386 | 일찍 1387 | 일체 1388 | 일치 1389 | 일행 1390 | 일회용 1391 | 임금 1392 | 임무 1393 | 입대 1394 | 입력 1395 | 입맛 1396 | 입사 1397 | 입술 1398 | 입시 1399 | 입원 1400 | 입장 1401 | 입학 1402 | 자가용 1403 | 자격 1404 | 자극 1405 | 자동 1406 | 자랑 1407 | 자부심 1408 | 자식 1409 | 자신 1410 | 자연 1411 | 자원 1412 | 자율 1413 | 자전거 1414 | 자정 1415 | 자존심 1416 | 자판 1417 | 작가 1418 | 작년 1419 | 작성 1420 | 작업 1421 | 작용 1422 | 작은딸 1423 | 작품 1424 | 잔디 1425 | 잔뜩 1426 | 잔치 1427 | 잘못 1428 | 잠깐 1429 | 잠수함 1430 | 잠시 1431 | 잠옷 1432 | 잠자리 1433 | 잡지 1434 | 장관 1435 | 장군 1436 | 장기간 1437 | 장래 1438 | 장례 1439 | 장르 1440 | 장마 1441 | 장면 1442 | 장모 1443 | 장미 1444 | 장비 1445 | 장사 1446 | 장소 1447 | 장식 1448 | 장애인 1449 | 장인 1450 | 장점 1451 | 장차 1452 | 장학금 1453 | 재능 1454 | 재빨리 1455 | 재산 1456 | 재생 1457 | 재작년 1458 | 재정 1459 | 재채기 1460 | 재판 1461 | 재학 1462 | 재활용 1463 | 저것 1464 | 저고리 1465 | 저곳 1466 | 저녁 1467 | 저런 1468 | 저렇게 1469 | 저번 1470 | 저울 1471 | 저절로 1472 | 저축 1473 | 적극 1474 | 적당히 1475 | 적성 1476 | 적용 1477 | 적응 1478 | 전개 1479 | 전공 1480 | 전기 1481 | 전달 1482 | 전라도 1483 | 전망 1484 | 전문 1485 | 전반 1486 | 전부 1487 | 전세 1488 | 전시 1489 | 전용 1490 | 전자 1491 | 전쟁 1492 | 전주 1493 | 전철 1494 | 전체 1495 | 전통 1496 | 전혀 1497 | 전후 1498 | 절대 1499 | 절망 1500 | 절반 1501 | 절약 1502 | 절차 1503 | 점검 1504 | 점수 1505 | 점심 1506 | 점원 1507 | 점점 1508 | 점차 1509 | 접근 1510 | 접시 1511 | 접촉 1512 | 젓가락 1513 | 정거장 1514 | 정도 1515 | 정류장 1516 | 정리 1517 | 정말 1518 | 정면 1519 | 정문 1520 | 정반대 1521 | 정보 1522 | 정부 1523 | 정비 1524 | 정상 1525 | 정성 1526 | 정오 1527 | 정원 1528 | 정장 1529 | 정지 1530 | 정치 1531 | 정확히 1532 | 제공 1533 | 제과점 1534 | 제대로 1535 | 제목 1536 | 제발 1537 | 제법 1538 | 제삿날 1539 | 제안 1540 | 제일 1541 | 제작 1542 | 제주도 1543 | 제출 1544 | 제품 1545 | 제한 1546 | 조각 1547 | 조건 1548 | 조금 1549 | 조깅 1550 | 조명 1551 | 조미료 1552 | 조상 1553 | 조선 1554 | 조용히 1555 | 조절 1556 | 조정 1557 | 조직 1558 | 존댓말 1559 | 존재 1560 | 졸업 1561 | 졸음 1562 | 종교 1563 | 종로 1564 | 종류 1565 | 종소리 1566 | 종업원 1567 | 종종 1568 | 종합 1569 | 좌석 1570 | 죄인 1571 | 주관적 1572 | 주름 1573 | 주말 1574 | 주머니 1575 | 주먹 1576 | 주문 1577 | 주민 1578 | 주방 1579 | 주변 1580 | 주식 1581 | 주인 1582 | 주일 1583 | 주장 1584 | 주전자 1585 | 주택 1586 | 준비 1587 | 줄거리 1588 | 줄기 1589 | 줄무늬 1590 | 중간 1591 | 중계방송 1592 | 중국 1593 | 중년 1594 | 중단 1595 | 중독 1596 | 중반 1597 | 중부 1598 | 중세 1599 | 중소기업 1600 | 중순 1601 | 중앙 1602 | 중요 1603 | 중학교 1604 | 즉석 1605 | 즉시 1606 | 즐거움 1607 | 증가 1608 | 증거 1609 | 증권 1610 | 증상 1611 | 증세 1612 | 지각 1613 | 지갑 1614 | 지경 1615 | 지극히 1616 | 지금 1617 | 지급 1618 | 지능 1619 | 지름길 1620 | 지리산 1621 | 지방 1622 | 지붕 1623 | 지식 1624 | 지역 1625 | 지우개 1626 | 지원 1627 | 지적 1628 | 지점 1629 | 지진 1630 | 지출 1631 | 직선 1632 | 직업 1633 | 직원 1634 | 직장 1635 | 진급 1636 | 진동 1637 | 진로 1638 | 진료 1639 | 진리 1640 | 진짜 1641 | 진찰 1642 | 진출 1643 | 진통 1644 | 진행 1645 | 질문 1646 | 질병 1647 | 질서 1648 | 짐작 1649 | 집단 1650 | 집안 1651 | 집중 1652 | 짜증 1653 | 찌꺼기 1654 | 차남 1655 | 차라리 1656 | 차량 1657 | 차림 1658 | 차별 1659 | 차선 1660 | 차츰 1661 | 착각 1662 | 찬물 1663 | 찬성 1664 | 참가 1665 | 참기름 1666 | 참새 1667 | 참석 1668 | 참여 1669 | 참외 1670 | 참조 1671 | 찻잔 1672 | 창가 1673 | 창고 1674 | 창구 1675 | 창문 1676 | 창밖 1677 | 창작 1678 | 창조 1679 | 채널 1680 | 채점 1681 | 책가방 1682 | 책방 1683 | 책상 1684 | 책임 1685 | 챔피언 1686 | 처벌 1687 | 처음 1688 | 천국 1689 | 천둥 1690 | 천장 1691 | 천재 1692 | 천천히 1693 | 철도 1694 | 철저히 1695 | 철학 1696 | 첫날 1697 | 첫째 1698 | 청년 1699 | 청바지 1700 | 청소 1701 | 청춘 1702 | 체계 1703 | 체력 1704 | 체온 1705 | 체육 1706 | 체중 1707 | 체험 1708 | 초등학생 1709 | 초반 1710 | 초밥 1711 | 초상화 1712 | 초순 1713 | 초여름 1714 | 초원 1715 | 초저녁 1716 | 초점 1717 | 초청 1718 | 초콜릿 1719 | 촛불 1720 | 총각 1721 | 총리 1722 | 총장 1723 | 촬영 1724 | 최근 1725 | 최상 1726 | 최선 1727 | 최신 1728 | 최악 1729 | 최종 1730 | 추석 1731 | 추억 1732 | 추진 1733 | 추천 1734 | 추측 1735 | 축구 1736 | 축소 1737 | 축제 1738 | 축하 1739 | 출근 1740 | 출발 1741 | 출산 1742 | 출신 1743 | 출연 1744 | 출입 1745 | 출장 1746 | 출판 1747 | 충격 1748 | 충고 1749 | 충돌 1750 | 충분히 1751 | 충청도 1752 | 취업 1753 | 취직 1754 | 취향 1755 | 치약 1756 | 친구 1757 | 친척 1758 | 칠십 1759 | 칠월 1760 | 칠판 1761 | 침대 1762 | 침묵 1763 | 침실 1764 | 칫솔 1765 | 칭찬 1766 | 카메라 1767 | 카운터 1768 | 칼국수 1769 | 캐릭터 1770 | 캠퍼스 1771 | 캠페인 1772 | 커튼 1773 | 컨디션 1774 | 컬러 1775 | 컴퓨터 1776 | 코끼리 1777 | 코미디 1778 | 콘서트 1779 | 콜라 1780 | 콤플렉스 1781 | 콩나물 1782 | 쾌감 1783 | 쿠데타 1784 | 크림 1785 | 큰길 1786 | 큰딸 1787 | 큰소리 1788 | 큰아들 1789 | 큰어머니 1790 | 큰일 1791 | 큰절 1792 | 클래식 1793 | 클럽 1794 | 킬로 1795 | 타입 1796 | 타자기 1797 | 탁구 1798 | 탁자 1799 | 탄생 1800 | 태권도 1801 | 태양 1802 | 태풍 1803 | 택시 1804 | 탤런트 1805 | 터널 1806 | 터미널 1807 | 테니스 1808 | 테스트 1809 | 테이블 1810 | 텔레비전 1811 | 토론 1812 | 토마토 1813 | 토요일 1814 | 통계 1815 | 통과 1816 | 통로 1817 | 통신 1818 | 통역 1819 | 통일 1820 | 통장 1821 | 통제 1822 | 통증 1823 | 통합 1824 | 통화 1825 | 퇴근 1826 | 퇴원 1827 | 퇴직금 1828 | 튀김 1829 | 트럭 1830 | 특급 1831 | 특별 1832 | 특성 1833 | 특수 1834 | 특징 1835 | 특히 1836 | 튼튼히 1837 | 티셔츠 1838 | 파란색 1839 | 파일 1840 | 파출소 1841 | 판결 1842 | 판단 1843 | 판매 1844 | 판사 1845 | 팔십 1846 | 팔월 1847 | 팝송 1848 | 패션 1849 | 팩스 1850 | 팩시밀리 1851 | 팬티 1852 | 퍼센트 1853 | 페인트 1854 | 편견 1855 | 편의 1856 | 편지 1857 | 편히 1858 | 평가 1859 | 평균 1860 | 평생 1861 | 평소 1862 | 평양 1863 | 평일 1864 | 평화 1865 | 포스터 1866 | 포인트 1867 | 포장 1868 | 포함 1869 | 표면 1870 | 표정 1871 | 표준 1872 | 표현 1873 | 품목 1874 | 품질 1875 | 풍경 1876 | 풍속 1877 | 풍습 1878 | 프랑스 1879 | 프린터 1880 | 플라스틱 1881 | 피곤 1882 | 피망 1883 | 피아노 1884 | 필름 1885 | 필수 1886 | 필요 1887 | 필자 1888 | 필통 1889 | 핑계 1890 | 하느님 1891 | 하늘 1892 | 하드웨어 1893 | 하룻밤 1894 | 하반기 1895 | 하숙집 1896 | 하순 1897 | 하여튼 1898 | 하지만 1899 | 하천 1900 | 하품 1901 | 하필 1902 | 학과 1903 | 학교 1904 | 학급 1905 | 학기 1906 | 학년 1907 | 학력 1908 | 학번 1909 | 학부모 1910 | 학비 1911 | 학생 1912 | 학술 1913 | 학습 1914 | 학용품 1915 | 학원 1916 | 학위 1917 | 학자 1918 | 학점 1919 | 한계 1920 | 한글 1921 | 한꺼번에 1922 | 한낮 1923 | 한눈 1924 | 한동안 1925 | 한때 1926 | 한라산 1927 | 한마디 1928 | 한문 1929 | 한번 1930 | 한복 1931 | 한식 1932 | 한여름 1933 | 한쪽 1934 | 할머니 1935 | 할아버지 1936 | 할인 1937 | 함께 1938 | 함부로 1939 | 합격 1940 | 합리적 1941 | 항공 1942 | 항구 1943 | 항상 1944 | 항의 1945 | 해결 1946 | 해군 1947 | 해답 1948 | 해당 1949 | 해물 1950 | 해석 1951 | 해설 1952 | 해수욕장 1953 | 해안 1954 | 핵심 1955 | 핸드백 1956 | 햄버거 1957 | 햇볕 1958 | 햇살 1959 | 행동 1960 | 행복 1961 | 행사 1962 | 행운 1963 | 행위 1964 | 향기 1965 | 향상 1966 | 향수 1967 | 허락 1968 | 허용 1969 | 헬기 1970 | 현관 1971 | 현금 1972 | 현대 1973 | 현상 1974 | 현실 1975 | 현장 1976 | 현재 1977 | 현지 1978 | 혈액 1979 | 협력 1980 | 형부 1981 | 형사 1982 | 형수 1983 | 형식 1984 | 형제 1985 | 형태 1986 | 형편 1987 | 혜택 1988 | 호기심 1989 | 호남 1990 | 호랑이 1991 | 호박 1992 | 호텔 1993 | 호흡 1994 | 혹시 1995 | 홀로 1996 | 홈페이지 1997 | 홍보 1998 | 홍수 1999 | 홍차 2000 | 화면 2001 | 화분 2002 | 화살 2003 | 화요일 2004 | 화장 2005 | 화학 2006 | 확보 2007 | 확인 2008 | 확장 2009 | 확정 2010 | 환갑 2011 | 환경 2012 | 환영 2013 | 환율 2014 | 환자 2015 | 활기 2016 | 활동 2017 | 활발히 2018 | 활용 2019 | 활짝 2020 | 회견 2021 | 회관 2022 | 회복 2023 | 회색 2024 | 회원 2025 | 회장 2026 | 회전 2027 | 횟수 2028 | 횡단보도 2029 | 효율적 2030 | 후반 2031 | 후춧가루 2032 | 훈련 2033 | 훨씬 2034 | 휴식 2035 | 휴일 2036 | 흉내 2037 | 흐름 2038 | 흑백 2039 | 흑인 2040 | 흔적 2041 | 흔히 2042 | 흥미 2043 | 흥분 2044 | 희곡 2045 | 희망 2046 | 희생 2047 | 흰색 2048 | 힘껏 -------------------------------------------------------------------------------- /src/main/resources/wordlists/spanish.txt: -------------------------------------------------------------------------------- 1 | ábaco 2 | abdomen 3 | abeja 4 | abierto 5 | abogado 6 | abono 7 | aborto 8 | abrazo 9 | abrir 10 | abuelo 11 | abuso 12 | acabar 13 | academia 14 | acceso 15 | acción 16 | aceite 17 | acelga 18 | acento 19 | aceptar 20 | ácido 21 | aclarar 22 | acné 23 | acoger 24 | acoso 25 | activo 26 | acto 27 | actriz 28 | actuar 29 | acudir 30 | acuerdo 31 | acusar 32 | adicto 33 | admitir 34 | adoptar 35 | adorno 36 | aduana 37 | adulto 38 | aéreo 39 | afectar 40 | afición 41 | afinar 42 | afirmar 43 | ágil 44 | agitar 45 | agonía 46 | agosto 47 | agotar 48 | agregar 49 | agrio 50 | agua 51 | agudo 52 | águila 53 | aguja 54 | ahogo 55 | ahorro 56 | aire 57 | aislar 58 | ajedrez 59 | ajeno 60 | ajuste 61 | alacrán 62 | alambre 63 | alarma 64 | alba 65 | álbum 66 | alcalde 67 | aldea 68 | alegre 69 | alejar 70 | alerta 71 | aleta 72 | alfiler 73 | alga 74 | algodón 75 | aliado 76 | aliento 77 | alivio 78 | alma 79 | almeja 80 | almíbar 81 | altar 82 | alteza 83 | altivo 84 | alto 85 | altura 86 | alumno 87 | alzar 88 | amable 89 | amante 90 | amapola 91 | amargo 92 | amasar 93 | ámbar 94 | ámbito 95 | ameno 96 | amigo 97 | amistad 98 | amor 99 | amparo 100 | amplio 101 | ancho 102 | anciano 103 | ancla 104 | andar 105 | andén 106 | anemia 107 | ángulo 108 | anillo 109 | ánimo 110 | anís 111 | anotar 112 | antena 113 | antiguo 114 | antojo 115 | anual 116 | anular 117 | anuncio 118 | añadir 119 | añejo 120 | año 121 | apagar 122 | aparato 123 | apetito 124 | apio 125 | aplicar 126 | apodo 127 | aporte 128 | apoyo 129 | aprender 130 | aprobar 131 | apuesta 132 | apuro 133 | arado 134 | araña 135 | arar 136 | árbitro 137 | árbol 138 | arbusto 139 | archivo 140 | arco 141 | arder 142 | ardilla 143 | arduo 144 | área 145 | árido 146 | aries 147 | armonía 148 | arnés 149 | aroma 150 | arpa 151 | arpón 152 | arreglo 153 | arroz 154 | arruga 155 | arte 156 | artista 157 | asa 158 | asado 159 | asalto 160 | ascenso 161 | asegurar 162 | aseo 163 | asesor 164 | asiento 165 | asilo 166 | asistir 167 | asno 168 | asombro 169 | áspero 170 | astilla 171 | astro 172 | astuto 173 | asumir 174 | asunto 175 | atajo 176 | ataque 177 | atar 178 | atento 179 | ateo 180 | ático 181 | atleta 182 | átomo 183 | atraer 184 | atroz 185 | atún 186 | audaz 187 | audio 188 | auge 189 | aula 190 | aumento 191 | ausente 192 | autor 193 | aval 194 | avance 195 | avaro 196 | ave 197 | avellana 198 | avena 199 | avestruz 200 | avión 201 | aviso 202 | ayer 203 | ayuda 204 | ayuno 205 | azafrán 206 | azar 207 | azote 208 | azúcar 209 | azufre 210 | azul 211 | baba 212 | babor 213 | bache 214 | bahía 215 | baile 216 | bajar 217 | balanza 218 | balcón 219 | balde 220 | bambú 221 | banco 222 | banda 223 | baño 224 | barba 225 | barco 226 | barniz 227 | barro 228 | báscula 229 | bastón 230 | basura 231 | batalla 232 | batería 233 | batir 234 | batuta 235 | baúl 236 | bazar 237 | bebé 238 | bebida 239 | bello 240 | besar 241 | beso 242 | bestia 243 | bicho 244 | bien 245 | bingo 246 | blanco 247 | bloque 248 | blusa 249 | boa 250 | bobina 251 | bobo 252 | boca 253 | bocina 254 | boda 255 | bodega 256 | boina 257 | bola 258 | bolero 259 | bolsa 260 | bomba 261 | bondad 262 | bonito 263 | bono 264 | bonsái 265 | borde 266 | borrar 267 | bosque 268 | bote 269 | botín 270 | bóveda 271 | bozal 272 | bravo 273 | brazo 274 | brecha 275 | breve 276 | brillo 277 | brinco 278 | brisa 279 | broca 280 | broma 281 | bronce 282 | brote 283 | bruja 284 | brusco 285 | bruto 286 | buceo 287 | bucle 288 | bueno 289 | buey 290 | bufanda 291 | bufón 292 | búho 293 | buitre 294 | bulto 295 | burbuja 296 | burla 297 | burro 298 | buscar 299 | butaca 300 | buzón 301 | caballo 302 | cabeza 303 | cabina 304 | cabra 305 | cacao 306 | cadáver 307 | cadena 308 | caer 309 | café 310 | caída 311 | caimán 312 | caja 313 | cajón 314 | cal 315 | calamar 316 | calcio 317 | caldo 318 | calidad 319 | calle 320 | calma 321 | calor 322 | calvo 323 | cama 324 | cambio 325 | camello 326 | camino 327 | campo 328 | cáncer 329 | candil 330 | canela 331 | canguro 332 | canica 333 | canto 334 | caña 335 | cañón 336 | caoba 337 | caos 338 | capaz 339 | capitán 340 | capote 341 | captar 342 | capucha 343 | cara 344 | carbón 345 | cárcel 346 | careta 347 | carga 348 | cariño 349 | carne 350 | carpeta 351 | carro 352 | carta 353 | casa 354 | casco 355 | casero 356 | caspa 357 | castor 358 | catorce 359 | catre 360 | caudal 361 | causa 362 | cazo 363 | cebolla 364 | ceder 365 | cedro 366 | celda 367 | célebre 368 | celoso 369 | célula 370 | cemento 371 | ceniza 372 | centro 373 | cerca 374 | cerdo 375 | cereza 376 | cero 377 | cerrar 378 | certeza 379 | césped 380 | cetro 381 | chacal 382 | chaleco 383 | champú 384 | chancla 385 | chapa 386 | charla 387 | chico 388 | chiste 389 | chivo 390 | choque 391 | choza 392 | chuleta 393 | chupar 394 | ciclón 395 | ciego 396 | cielo 397 | cien 398 | cierto 399 | cifra 400 | cigarro 401 | cima 402 | cinco 403 | cine 404 | cinta 405 | ciprés 406 | circo 407 | ciruela 408 | cisne 409 | cita 410 | ciudad 411 | clamor 412 | clan 413 | claro 414 | clase 415 | clave 416 | cliente 417 | clima 418 | clínica 419 | cobre 420 | cocción 421 | cochino 422 | cocina 423 | coco 424 | código 425 | codo 426 | cofre 427 | coger 428 | cohete 429 | cojín 430 | cojo 431 | cola 432 | colcha 433 | colegio 434 | colgar 435 | colina 436 | collar 437 | colmo 438 | columna 439 | combate 440 | comer 441 | comida 442 | cómodo 443 | compra 444 | conde 445 | conejo 446 | conga 447 | conocer 448 | consejo 449 | contar 450 | copa 451 | copia 452 | corazón 453 | corbata 454 | corcho 455 | cordón 456 | corona 457 | correr 458 | coser 459 | cosmos 460 | costa 461 | cráneo 462 | cráter 463 | crear 464 | crecer 465 | creído 466 | crema 467 | cría 468 | crimen 469 | cripta 470 | crisis 471 | cromo 472 | crónica 473 | croqueta 474 | crudo 475 | cruz 476 | cuadro 477 | cuarto 478 | cuatro 479 | cubo 480 | cubrir 481 | cuchara 482 | cuello 483 | cuento 484 | cuerda 485 | cuesta 486 | cueva 487 | cuidar 488 | culebra 489 | culpa 490 | culto 491 | cumbre 492 | cumplir 493 | cuna 494 | cuneta 495 | cuota 496 | cupón 497 | cúpula 498 | curar 499 | curioso 500 | curso 501 | curva 502 | cutis 503 | dama 504 | danza 505 | dar 506 | dardo 507 | dátil 508 | deber 509 | débil 510 | década 511 | decir 512 | dedo 513 | defensa 514 | definir 515 | dejar 516 | delfín 517 | delgado 518 | delito 519 | demora 520 | denso 521 | dental 522 | deporte 523 | derecho 524 | derrota 525 | desayuno 526 | deseo 527 | desfile 528 | desnudo 529 | destino 530 | desvío 531 | detalle 532 | detener 533 | deuda 534 | día 535 | diablo 536 | diadema 537 | diamante 538 | diana 539 | diario 540 | dibujo 541 | dictar 542 | diente 543 | dieta 544 | diez 545 | difícil 546 | digno 547 | dilema 548 | diluir 549 | dinero 550 | directo 551 | dirigir 552 | disco 553 | diseño 554 | disfraz 555 | diva 556 | divino 557 | doble 558 | doce 559 | dolor 560 | domingo 561 | don 562 | donar 563 | dorado 564 | dormir 565 | dorso 566 | dos 567 | dosis 568 | dragón 569 | droga 570 | ducha 571 | duda 572 | duelo 573 | dueño 574 | dulce 575 | dúo 576 | duque 577 | durar 578 | dureza 579 | duro 580 | ébano 581 | ebrio 582 | echar 583 | eco 584 | ecuador 585 | edad 586 | edición 587 | edificio 588 | editor 589 | educar 590 | efecto 591 | eficaz 592 | eje 593 | ejemplo 594 | elefante 595 | elegir 596 | elemento 597 | elevar 598 | elipse 599 | élite 600 | elixir 601 | elogio 602 | eludir 603 | embudo 604 | emitir 605 | emoción 606 | empate 607 | empeño 608 | empleo 609 | empresa 610 | enano 611 | encargo 612 | enchufe 613 | encía 614 | enemigo 615 | enero 616 | enfado 617 | enfermo 618 | engaño 619 | enigma 620 | enlace 621 | enorme 622 | enredo 623 | ensayo 624 | enseñar 625 | entero 626 | entrar 627 | envase 628 | envío 629 | época 630 | equipo 631 | erizo 632 | escala 633 | escena 634 | escolar 635 | escribir 636 | escudo 637 | esencia 638 | esfera 639 | esfuerzo 640 | espada 641 | espejo 642 | espía 643 | esposa 644 | espuma 645 | esquí 646 | estar 647 | este 648 | estilo 649 | estufa 650 | etapa 651 | eterno 652 | ética 653 | etnia 654 | evadir 655 | evaluar 656 | evento 657 | evitar 658 | exacto 659 | examen 660 | exceso 661 | excusa 662 | exento 663 | exigir 664 | exilio 665 | existir 666 | éxito 667 | experto 668 | explicar 669 | exponer 670 | extremo 671 | fábrica 672 | fábula 673 | fachada 674 | fácil 675 | factor 676 | faena 677 | faja 678 | falda 679 | fallo 680 | falso 681 | faltar 682 | fama 683 | familia 684 | famoso 685 | faraón 686 | farmacia 687 | farol 688 | farsa 689 | fase 690 | fatiga 691 | fauna 692 | favor 693 | fax 694 | febrero 695 | fecha 696 | feliz 697 | feo 698 | feria 699 | feroz 700 | fértil 701 | fervor 702 | festín 703 | fiable 704 | fianza 705 | fiar 706 | fibra 707 | ficción 708 | ficha 709 | fideo 710 | fiebre 711 | fiel 712 | fiera 713 | fiesta 714 | figura 715 | fijar 716 | fijo 717 | fila 718 | filete 719 | filial 720 | filtro 721 | fin 722 | finca 723 | fingir 724 | finito 725 | firma 726 | flaco 727 | flauta 728 | flecha 729 | flor 730 | flota 731 | fluir 732 | flujo 733 | flúor 734 | fobia 735 | foca 736 | fogata 737 | fogón 738 | folio 739 | folleto 740 | fondo 741 | forma 742 | forro 743 | fortuna 744 | forzar 745 | fosa 746 | foto 747 | fracaso 748 | frágil 749 | franja 750 | frase 751 | fraude 752 | freír 753 | freno 754 | fresa 755 | frío 756 | frito 757 | fruta 758 | fuego 759 | fuente 760 | fuerza 761 | fuga 762 | fumar 763 | función 764 | funda 765 | furgón 766 | furia 767 | fusil 768 | fútbol 769 | futuro 770 | gacela 771 | gafas 772 | gaita 773 | gajo 774 | gala 775 | galería 776 | gallo 777 | gamba 778 | ganar 779 | gancho 780 | ganga 781 | ganso 782 | garaje 783 | garza 784 | gasolina 785 | gastar 786 | gato 787 | gavilán 788 | gemelo 789 | gemir 790 | gen 791 | género 792 | genio 793 | gente 794 | geranio 795 | gerente 796 | germen 797 | gesto 798 | gigante 799 | gimnasio 800 | girar 801 | giro 802 | glaciar 803 | globo 804 | gloria 805 | gol 806 | golfo 807 | goloso 808 | golpe 809 | goma 810 | gordo 811 | gorila 812 | gorra 813 | gota 814 | goteo 815 | gozar 816 | grada 817 | gráfico 818 | grano 819 | grasa 820 | gratis 821 | grave 822 | grieta 823 | grillo 824 | gripe 825 | gris 826 | grito 827 | grosor 828 | grúa 829 | grueso 830 | grumo 831 | grupo 832 | guante 833 | guapo 834 | guardia 835 | guerra 836 | guía 837 | guiño 838 | guion 839 | guiso 840 | guitarra 841 | gusano 842 | gustar 843 | haber 844 | hábil 845 | hablar 846 | hacer 847 | hacha 848 | hada 849 | hallar 850 | hamaca 851 | harina 852 | haz 853 | hazaña 854 | hebilla 855 | hebra 856 | hecho 857 | helado 858 | helio 859 | hembra 860 | herir 861 | hermano 862 | héroe 863 | hervir 864 | hielo 865 | hierro 866 | hígado 867 | higiene 868 | hijo 869 | himno 870 | historia 871 | hocico 872 | hogar 873 | hoguera 874 | hoja 875 | hombre 876 | hongo 877 | honor 878 | honra 879 | hora 880 | hormiga 881 | horno 882 | hostil 883 | hoyo 884 | hueco 885 | huelga 886 | huerta 887 | hueso 888 | huevo 889 | huida 890 | huir 891 | humano 892 | húmedo 893 | humilde 894 | humo 895 | hundir 896 | huracán 897 | hurto 898 | icono 899 | ideal 900 | idioma 901 | ídolo 902 | iglesia 903 | iglú 904 | igual 905 | ilegal 906 | ilusión 907 | imagen 908 | imán 909 | imitar 910 | impar 911 | imperio 912 | imponer 913 | impulso 914 | incapaz 915 | índice 916 | inerte 917 | infiel 918 | informe 919 | ingenio 920 | inicio 921 | inmenso 922 | inmune 923 | innato 924 | insecto 925 | instante 926 | interés 927 | íntimo 928 | intuir 929 | inútil 930 | invierno 931 | ira 932 | iris 933 | ironía 934 | isla 935 | islote 936 | jabalí 937 | jabón 938 | jamón 939 | jarabe 940 | jardín 941 | jarra 942 | jaula 943 | jazmín 944 | jefe 945 | jeringa 946 | jinete 947 | jornada 948 | joroba 949 | joven 950 | joya 951 | juerga 952 | jueves 953 | juez 954 | jugador 955 | jugo 956 | juguete 957 | juicio 958 | junco 959 | jungla 960 | junio 961 | juntar 962 | júpiter 963 | jurar 964 | justo 965 | juvenil 966 | juzgar 967 | kilo 968 | koala 969 | labio 970 | lacio 971 | lacra 972 | lado 973 | ladrón 974 | lagarto 975 | lágrima 976 | laguna 977 | laico 978 | lamer 979 | lámina 980 | lámpara 981 | lana 982 | lancha 983 | langosta 984 | lanza 985 | lápiz 986 | largo 987 | larva 988 | lástima 989 | lata 990 | látex 991 | latir 992 | laurel 993 | lavar 994 | lazo 995 | leal 996 | lección 997 | leche 998 | lector 999 | leer 1000 | legión 1001 | legumbre 1002 | lejano 1003 | lengua 1004 | lento 1005 | leña 1006 | león 1007 | leopardo 1008 | lesión 1009 | letal 1010 | letra 1011 | leve 1012 | leyenda 1013 | libertad 1014 | libro 1015 | licor 1016 | líder 1017 | lidiar 1018 | lienzo 1019 | liga 1020 | ligero 1021 | lima 1022 | límite 1023 | limón 1024 | limpio 1025 | lince 1026 | lindo 1027 | línea 1028 | lingote 1029 | lino 1030 | linterna 1031 | líquido 1032 | liso 1033 | lista 1034 | litera 1035 | litio 1036 | litro 1037 | llaga 1038 | llama 1039 | llanto 1040 | llave 1041 | llegar 1042 | llenar 1043 | llevar 1044 | llorar 1045 | llover 1046 | lluvia 1047 | lobo 1048 | loción 1049 | loco 1050 | locura 1051 | lógica 1052 | logro 1053 | lombriz 1054 | lomo 1055 | lonja 1056 | lote 1057 | lucha 1058 | lucir 1059 | lugar 1060 | lujo 1061 | luna 1062 | lunes 1063 | lupa 1064 | lustro 1065 | luto 1066 | luz 1067 | maceta 1068 | macho 1069 | madera 1070 | madre 1071 | maduro 1072 | maestro 1073 | mafia 1074 | magia 1075 | mago 1076 | maíz 1077 | maldad 1078 | maleta 1079 | malla 1080 | malo 1081 | mamá 1082 | mambo 1083 | mamut 1084 | manco 1085 | mando 1086 | manejar 1087 | manga 1088 | maniquí 1089 | manjar 1090 | mano 1091 | manso 1092 | manta 1093 | mañana 1094 | mapa 1095 | máquina 1096 | mar 1097 | marco 1098 | marea 1099 | marfil 1100 | margen 1101 | marido 1102 | mármol 1103 | marrón 1104 | martes 1105 | marzo 1106 | masa 1107 | máscara 1108 | masivo 1109 | matar 1110 | materia 1111 | matiz 1112 | matriz 1113 | máximo 1114 | mayor 1115 | mazorca 1116 | mecha 1117 | medalla 1118 | medio 1119 | médula 1120 | mejilla 1121 | mejor 1122 | melena 1123 | melón 1124 | memoria 1125 | menor 1126 | mensaje 1127 | mente 1128 | menú 1129 | mercado 1130 | merengue 1131 | mérito 1132 | mes 1133 | mesón 1134 | meta 1135 | meter 1136 | método 1137 | metro 1138 | mezcla 1139 | miedo 1140 | miel 1141 | miembro 1142 | miga 1143 | mil 1144 | milagro 1145 | militar 1146 | millón 1147 | mimo 1148 | mina 1149 | minero 1150 | mínimo 1151 | minuto 1152 | miope 1153 | mirar 1154 | misa 1155 | miseria 1156 | misil 1157 | mismo 1158 | mitad 1159 | mito 1160 | mochila 1161 | moción 1162 | moda 1163 | modelo 1164 | moho 1165 | mojar 1166 | molde 1167 | moler 1168 | molino 1169 | momento 1170 | momia 1171 | monarca 1172 | moneda 1173 | monja 1174 | monto 1175 | moño 1176 | morada 1177 | morder 1178 | moreno 1179 | morir 1180 | morro 1181 | morsa 1182 | mortal 1183 | mosca 1184 | mostrar 1185 | motivo 1186 | mover 1187 | móvil 1188 | mozo 1189 | mucho 1190 | mudar 1191 | mueble 1192 | muela 1193 | muerte 1194 | muestra 1195 | mugre 1196 | mujer 1197 | mula 1198 | muleta 1199 | multa 1200 | mundo 1201 | muñeca 1202 | mural 1203 | muro 1204 | músculo 1205 | museo 1206 | musgo 1207 | música 1208 | muslo 1209 | nácar 1210 | nación 1211 | nadar 1212 | naipe 1213 | naranja 1214 | nariz 1215 | narrar 1216 | nasal 1217 | natal 1218 | nativo 1219 | natural 1220 | náusea 1221 | naval 1222 | nave 1223 | navidad 1224 | necio 1225 | néctar 1226 | negar 1227 | negocio 1228 | negro 1229 | neón 1230 | nervio 1231 | neto 1232 | neutro 1233 | nevar 1234 | nevera 1235 | nicho 1236 | nido 1237 | niebla 1238 | nieto 1239 | niñez 1240 | niño 1241 | nítido 1242 | nivel 1243 | nobleza 1244 | noche 1245 | nómina 1246 | noria 1247 | norma 1248 | norte 1249 | nota 1250 | noticia 1251 | novato 1252 | novela 1253 | novio 1254 | nube 1255 | nuca 1256 | núcleo 1257 | nudillo 1258 | nudo 1259 | nuera 1260 | nueve 1261 | nuez 1262 | nulo 1263 | número 1264 | nutria 1265 | oasis 1266 | obeso 1267 | obispo 1268 | objeto 1269 | obra 1270 | obrero 1271 | observar 1272 | obtener 1273 | obvio 1274 | oca 1275 | ocaso 1276 | océano 1277 | ochenta 1278 | ocho 1279 | ocio 1280 | ocre 1281 | octavo 1282 | octubre 1283 | oculto 1284 | ocupar 1285 | ocurrir 1286 | odiar 1287 | odio 1288 | odisea 1289 | oeste 1290 | ofensa 1291 | oferta 1292 | oficio 1293 | ofrecer 1294 | ogro 1295 | oído 1296 | oír 1297 | ojo 1298 | ola 1299 | oleada 1300 | olfato 1301 | olivo 1302 | olla 1303 | olmo 1304 | olor 1305 | olvido 1306 | ombligo 1307 | onda 1308 | onza 1309 | opaco 1310 | opción 1311 | ópera 1312 | opinar 1313 | oponer 1314 | optar 1315 | óptica 1316 | opuesto 1317 | oración 1318 | orador 1319 | oral 1320 | órbita 1321 | orca 1322 | orden 1323 | oreja 1324 | órgano 1325 | orgía 1326 | orgullo 1327 | oriente 1328 | origen 1329 | orilla 1330 | oro 1331 | orquesta 1332 | oruga 1333 | osadía 1334 | oscuro 1335 | osezno 1336 | oso 1337 | ostra 1338 | otoño 1339 | otro 1340 | oveja 1341 | óvulo 1342 | óxido 1343 | oxígeno 1344 | oyente 1345 | ozono 1346 | pacto 1347 | padre 1348 | paella 1349 | página 1350 | pago 1351 | país 1352 | pájaro 1353 | palabra 1354 | palco 1355 | paleta 1356 | pálido 1357 | palma 1358 | paloma 1359 | palpar 1360 | pan 1361 | panal 1362 | pánico 1363 | pantera 1364 | pañuelo 1365 | papá 1366 | papel 1367 | papilla 1368 | paquete 1369 | parar 1370 | parcela 1371 | pared 1372 | parir 1373 | paro 1374 | párpado 1375 | parque 1376 | párrafo 1377 | parte 1378 | pasar 1379 | paseo 1380 | pasión 1381 | paso 1382 | pasta 1383 | pata 1384 | patio 1385 | patria 1386 | pausa 1387 | pauta 1388 | pavo 1389 | payaso 1390 | peatón 1391 | pecado 1392 | pecera 1393 | pecho 1394 | pedal 1395 | pedir 1396 | pegar 1397 | peine 1398 | pelar 1399 | peldaño 1400 | pelea 1401 | peligro 1402 | pellejo 1403 | pelo 1404 | peluca 1405 | pena 1406 | pensar 1407 | peñón 1408 | peón 1409 | peor 1410 | pepino 1411 | pequeño 1412 | pera 1413 | percha 1414 | perder 1415 | pereza 1416 | perfil 1417 | perico 1418 | perla 1419 | permiso 1420 | perro 1421 | persona 1422 | pesa 1423 | pesca 1424 | pésimo 1425 | pestaña 1426 | pétalo 1427 | petróleo 1428 | pez 1429 | pezuña 1430 | picar 1431 | pichón 1432 | pie 1433 | piedra 1434 | pierna 1435 | pieza 1436 | pijama 1437 | pilar 1438 | piloto 1439 | pimienta 1440 | pino 1441 | pintor 1442 | pinza 1443 | piña 1444 | piojo 1445 | pipa 1446 | pirata 1447 | pisar 1448 | piscina 1449 | piso 1450 | pista 1451 | pitón 1452 | pizca 1453 | placa 1454 | plan 1455 | plata 1456 | playa 1457 | plaza 1458 | pleito 1459 | pleno 1460 | plomo 1461 | pluma 1462 | plural 1463 | pobre 1464 | poco 1465 | poder 1466 | podio 1467 | poema 1468 | poesía 1469 | poeta 1470 | polen 1471 | policía 1472 | pollo 1473 | polvo 1474 | pomada 1475 | pomelo 1476 | pomo 1477 | pompa 1478 | poner 1479 | porción 1480 | portal 1481 | posada 1482 | poseer 1483 | posible 1484 | poste 1485 | potencia 1486 | potro 1487 | pozo 1488 | prado 1489 | precoz 1490 | pregunta 1491 | premio 1492 | prensa 1493 | preso 1494 | previo 1495 | primo 1496 | príncipe 1497 | prisión 1498 | privar 1499 | proa 1500 | probar 1501 | proceso 1502 | producto 1503 | proeza 1504 | profesor 1505 | programa 1506 | prole 1507 | promesa 1508 | pronto 1509 | propio 1510 | próximo 1511 | prueba 1512 | público 1513 | puchero 1514 | pudor 1515 | pueblo 1516 | puerta 1517 | puesto 1518 | pulga 1519 | pulir 1520 | pulmón 1521 | pulpo 1522 | pulso 1523 | puma 1524 | punto 1525 | puñal 1526 | puño 1527 | pupa 1528 | pupila 1529 | puré 1530 | quedar 1531 | queja 1532 | quemar 1533 | querer 1534 | queso 1535 | quieto 1536 | química 1537 | quince 1538 | quitar 1539 | rábano 1540 | rabia 1541 | rabo 1542 | ración 1543 | radical 1544 | raíz 1545 | rama 1546 | rampa 1547 | rancho 1548 | rango 1549 | rapaz 1550 | rápido 1551 | rapto 1552 | rasgo 1553 | raspa 1554 | rato 1555 | rayo 1556 | raza 1557 | razón 1558 | reacción 1559 | realidad 1560 | rebaño 1561 | rebote 1562 | recaer 1563 | receta 1564 | rechazo 1565 | recoger 1566 | recreo 1567 | recto 1568 | recurso 1569 | red 1570 | redondo 1571 | reducir 1572 | reflejo 1573 | reforma 1574 | refrán 1575 | refugio 1576 | regalo 1577 | regir 1578 | regla 1579 | regreso 1580 | rehén 1581 | reino 1582 | reír 1583 | reja 1584 | relato 1585 | relevo 1586 | relieve 1587 | relleno 1588 | reloj 1589 | remar 1590 | remedio 1591 | remo 1592 | rencor 1593 | rendir 1594 | renta 1595 | reparto 1596 | repetir 1597 | reposo 1598 | reptil 1599 | res 1600 | rescate 1601 | resina 1602 | respeto 1603 | resto 1604 | resumen 1605 | retiro 1606 | retorno 1607 | retrato 1608 | reunir 1609 | revés 1610 | revista 1611 | rey 1612 | rezar 1613 | rico 1614 | riego 1615 | rienda 1616 | riesgo 1617 | rifa 1618 | rígido 1619 | rigor 1620 | rincón 1621 | riñón 1622 | río 1623 | riqueza 1624 | risa 1625 | ritmo 1626 | rito 1627 | rizo 1628 | roble 1629 | roce 1630 | rociar 1631 | rodar 1632 | rodeo 1633 | rodilla 1634 | roer 1635 | rojizo 1636 | rojo 1637 | romero 1638 | romper 1639 | ron 1640 | ronco 1641 | ronda 1642 | ropa 1643 | ropero 1644 | rosa 1645 | rosca 1646 | rostro 1647 | rotar 1648 | rubí 1649 | rubor 1650 | rudo 1651 | rueda 1652 | rugir 1653 | ruido 1654 | ruina 1655 | ruleta 1656 | rulo 1657 | rumbo 1658 | rumor 1659 | ruptura 1660 | ruta 1661 | rutina 1662 | sábado 1663 | saber 1664 | sabio 1665 | sable 1666 | sacar 1667 | sagaz 1668 | sagrado 1669 | sala 1670 | saldo 1671 | salero 1672 | salir 1673 | salmón 1674 | salón 1675 | salsa 1676 | salto 1677 | salud 1678 | salvar 1679 | samba 1680 | sanción 1681 | sandía 1682 | sanear 1683 | sangre 1684 | sanidad 1685 | sano 1686 | santo 1687 | sapo 1688 | saque 1689 | sardina 1690 | sartén 1691 | sastre 1692 | satán 1693 | sauna 1694 | saxofón 1695 | sección 1696 | seco 1697 | secreto 1698 | secta 1699 | sed 1700 | seguir 1701 | seis 1702 | sello 1703 | selva 1704 | semana 1705 | semilla 1706 | senda 1707 | sensor 1708 | señal 1709 | señor 1710 | separar 1711 | sepia 1712 | sequía 1713 | ser 1714 | serie 1715 | sermón 1716 | servir 1717 | sesenta 1718 | sesión 1719 | seta 1720 | setenta 1721 | severo 1722 | sexo 1723 | sexto 1724 | sidra 1725 | siesta 1726 | siete 1727 | siglo 1728 | signo 1729 | sílaba 1730 | silbar 1731 | silencio 1732 | silla 1733 | símbolo 1734 | simio 1735 | sirena 1736 | sistema 1737 | sitio 1738 | situar 1739 | sobre 1740 | socio 1741 | sodio 1742 | sol 1743 | solapa 1744 | soldado 1745 | soledad 1746 | sólido 1747 | soltar 1748 | solución 1749 | sombra 1750 | sondeo 1751 | sonido 1752 | sonoro 1753 | sonrisa 1754 | sopa 1755 | soplar 1756 | soporte 1757 | sordo 1758 | sorpresa 1759 | sorteo 1760 | sostén 1761 | sótano 1762 | suave 1763 | subir 1764 | suceso 1765 | sudor 1766 | suegra 1767 | suelo 1768 | sueño 1769 | suerte 1770 | sufrir 1771 | sujeto 1772 | sultán 1773 | sumar 1774 | superar 1775 | suplir 1776 | suponer 1777 | supremo 1778 | sur 1779 | surco 1780 | sureño 1781 | surgir 1782 | susto 1783 | sutil 1784 | tabaco 1785 | tabique 1786 | tabla 1787 | tabú 1788 | taco 1789 | tacto 1790 | tajo 1791 | talar 1792 | talco 1793 | talento 1794 | talla 1795 | talón 1796 | tamaño 1797 | tambor 1798 | tango 1799 | tanque 1800 | tapa 1801 | tapete 1802 | tapia 1803 | tapón 1804 | taquilla 1805 | tarde 1806 | tarea 1807 | tarifa 1808 | tarjeta 1809 | tarot 1810 | tarro 1811 | tarta 1812 | tatuaje 1813 | tauro 1814 | taza 1815 | tazón 1816 | teatro 1817 | techo 1818 | tecla 1819 | técnica 1820 | tejado 1821 | tejer 1822 | tejido 1823 | tela 1824 | teléfono 1825 | tema 1826 | temor 1827 | templo 1828 | tenaz 1829 | tender 1830 | tener 1831 | tenis 1832 | tenso 1833 | teoría 1834 | terapia 1835 | terco 1836 | término 1837 | ternura 1838 | terror 1839 | tesis 1840 | tesoro 1841 | testigo 1842 | tetera 1843 | texto 1844 | tez 1845 | tibio 1846 | tiburón 1847 | tiempo 1848 | tienda 1849 | tierra 1850 | tieso 1851 | tigre 1852 | tijera 1853 | tilde 1854 | timbre 1855 | tímido 1856 | timo 1857 | tinta 1858 | tío 1859 | típico 1860 | tipo 1861 | tira 1862 | tirón 1863 | titán 1864 | títere 1865 | título 1866 | tiza 1867 | toalla 1868 | tobillo 1869 | tocar 1870 | tocino 1871 | todo 1872 | toga 1873 | toldo 1874 | tomar 1875 | tono 1876 | tonto 1877 | topar 1878 | tope 1879 | toque 1880 | tórax 1881 | torero 1882 | tormenta 1883 | torneo 1884 | toro 1885 | torpedo 1886 | torre 1887 | torso 1888 | tortuga 1889 | tos 1890 | tosco 1891 | toser 1892 | tóxico 1893 | trabajo 1894 | tractor 1895 | traer 1896 | tráfico 1897 | trago 1898 | traje 1899 | tramo 1900 | trance 1901 | trato 1902 | trauma 1903 | trazar 1904 | trébol 1905 | tregua 1906 | treinta 1907 | tren 1908 | trepar 1909 | tres 1910 | tribu 1911 | trigo 1912 | tripa 1913 | triste 1914 | triunfo 1915 | trofeo 1916 | trompa 1917 | tronco 1918 | tropa 1919 | trote 1920 | trozo 1921 | truco 1922 | trueno 1923 | trufa 1924 | tubería 1925 | tubo 1926 | tuerto 1927 | tumba 1928 | tumor 1929 | túnel 1930 | túnica 1931 | turbina 1932 | turismo 1933 | turno 1934 | tutor 1935 | ubicar 1936 | úlcera 1937 | umbral 1938 | unidad 1939 | unir 1940 | universo 1941 | uno 1942 | untar 1943 | uña 1944 | urbano 1945 | urbe 1946 | urgente 1947 | urna 1948 | usar 1949 | usuario 1950 | útil 1951 | utopía 1952 | uva 1953 | vaca 1954 | vacío 1955 | vacuna 1956 | vagar 1957 | vago 1958 | vaina 1959 | vajilla 1960 | vale 1961 | válido 1962 | valle 1963 | valor 1964 | válvula 1965 | vampiro 1966 | vara 1967 | variar 1968 | varón 1969 | vaso 1970 | vecino 1971 | vector 1972 | vehículo 1973 | veinte 1974 | vejez 1975 | vela 1976 | velero 1977 | veloz 1978 | vena 1979 | vencer 1980 | venda 1981 | veneno 1982 | vengar 1983 | venir 1984 | venta 1985 | venus 1986 | ver 1987 | verano 1988 | verbo 1989 | verde 1990 | vereda 1991 | verja 1992 | verso 1993 | verter 1994 | vía 1995 | viaje 1996 | vibrar 1997 | vicio 1998 | víctima 1999 | vida 2000 | vídeo 2001 | vidrio 2002 | viejo 2003 | viernes 2004 | vigor 2005 | vil 2006 | villa 2007 | vinagre 2008 | vino 2009 | viñedo 2010 | violín 2011 | viral 2012 | virgo 2013 | virtud 2014 | visor 2015 | víspera 2016 | vista 2017 | vitamina 2018 | viudo 2019 | vivaz 2020 | vivero 2021 | vivir 2022 | vivo 2023 | volcán 2024 | volumen 2025 | volver 2026 | voraz 2027 | votar 2028 | voto 2029 | voz 2030 | vuelo 2031 | vulgar 2032 | yacer 2033 | yate 2034 | yegua 2035 | yema 2036 | yerno 2037 | yeso 2038 | yodo 2039 | yoga 2040 | yogur 2041 | zafiro 2042 | zanja 2043 | zapato 2044 | zarza 2045 | zona 2046 | zorro 2047 | zumo 2048 | zurdo -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/Base58.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip32; 2 | /* 3 | * Copyright 2011 Google Inc. 4 | * Copyright 2018 Andreas Schildbach 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | import com.github.orogvany.bip32.crypto.Hash; 20 | 21 | import java.util.Arrays; 22 | 23 | public class Base58 { 24 | public static final char[] ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz".toCharArray(); 25 | private static final char ENCODED_ZERO = ALPHABET[0]; 26 | private static final int[] INDEXES = new int[128]; 27 | 28 | static { 29 | Arrays.fill(INDEXES, -1); 30 | for (int i = 0; i < ALPHABET.length; i++) { 31 | INDEXES[ALPHABET[i]] = i; 32 | } 33 | } 34 | 35 | /** 36 | * Encodes the given bytes as a base58 string (no checksum is appended). 37 | * 38 | * @param input the bytes to encode 39 | * @return the base58-encoded string 40 | */ 41 | public static String encode(byte[] input) { 42 | if (input.length == 0) { 43 | return ""; 44 | } 45 | // Count leading zeros. 46 | int zeros = 0; 47 | while (zeros < input.length && input[zeros] == 0) { 48 | ++zeros; 49 | } 50 | // Convert base-256 digits to base-58 digits (plus conversion to ASCII 51 | // characters) 52 | input = Arrays.copyOf(input, input.length); // since we modify it in-place 53 | char[] encoded = new char[input.length * 2]; // upper bound 54 | int outputStart = encoded.length; 55 | for (int inputStart = zeros; inputStart < input.length; ) { 56 | encoded[--outputStart] = ALPHABET[divmod(input, inputStart, 256, 58)]; 57 | if (input[inputStart] == 0) { 58 | ++inputStart; // optimization - skip leading zeros 59 | } 60 | } 61 | // Preserve exactly as many leading encoded zeros in output as there were 62 | // leading zeros in input. 63 | while (outputStart < encoded.length && encoded[outputStart] == ENCODED_ZERO) { 64 | ++outputStart; 65 | } 66 | while (--zeros >= 0) { 67 | encoded[--outputStart] = ENCODED_ZERO; 68 | } 69 | // Return encoded string (including encoded leading zeros). 70 | return new String(encoded, outputStart, encoded.length - outputStart); 71 | } 72 | 73 | /** 74 | * Encodes the given version and bytes as a base58 string. A checksum is 75 | * appended. 76 | * 77 | * @param version the version to encode 78 | * @param payload the bytes to encode, e.g. pubkey hash 79 | * @return the base58-encoded string 80 | */ 81 | public static String encodeChecked(int version, byte[] payload) { 82 | if (version < 0 || version > 255) 83 | throw new IllegalArgumentException("Version not in range."); 84 | 85 | // A stringified buffer is: 86 | // 1 byte version + data bytes + 4 bytes check code (a truncated hash) 87 | byte[] addressBytes = new byte[1 + payload.length + 4]; 88 | addressBytes[0] = (byte) version; 89 | System.arraycopy(payload, 0, addressBytes, 1, payload.length); 90 | byte[] checksum = Hash.sha256Twice(addressBytes, 0, payload.length + 1); 91 | System.arraycopy(checksum, 0, addressBytes, payload.length + 1, 4); 92 | return Base58.encode(addressBytes); 93 | } 94 | 95 | /** 96 | * Decodes the given base58 string into the original data bytes. 97 | * 98 | * @param input the base58-encoded string to decode 99 | * @return the decoded data bytes 100 | */ 101 | public static byte[] decode(String input) { 102 | if (input.length() == 0) { 103 | return new byte[0]; 104 | } 105 | // Convert the base58-encoded ASCII chars to a base58 byte sequence (base58 106 | // digits). 107 | byte[] input58 = new byte[input.length()]; 108 | for (int i = 0; i < input.length(); ++i) { 109 | char c = input.charAt(i); 110 | int digit = c < 128 ? INDEXES[c] : -1; 111 | if (digit < 0) { 112 | throw new RuntimeException(); 113 | } 114 | input58[i] = (byte) digit; 115 | } 116 | // Count leading zeros. 117 | int zeros = 0; 118 | while (zeros < input58.length && input58[zeros] == 0) { 119 | ++zeros; 120 | } 121 | // Convert base-58 digits to base-256 digits. 122 | byte[] decoded = new byte[input.length()]; 123 | int outputStart = decoded.length; 124 | for (int inputStart = zeros; inputStart < input58.length; ) { 125 | decoded[--outputStart] = divmod(input58, inputStart, 58, 256); 126 | if (input58[inputStart] == 0) { 127 | ++inputStart; // optimization - skip leading zeros 128 | } 129 | } 130 | // Ignore extra leading zeroes that were added during the calculation. 131 | while (outputStart < decoded.length && decoded[outputStart] == 0) { 132 | ++outputStart; 133 | } 134 | // Return decoded data (including original number of leading zeros). 135 | return Arrays.copyOfRange(decoded, outputStart - zeros, decoded.length); 136 | } 137 | 138 | /** 139 | * Divides a number, represented as an array of bytes each containing a single 140 | * digit 141 | * in the specified base, by the given divisor. The given number is modified 142 | * in-place 143 | * to contain the quotient, and the return value is the remainder. 144 | * 145 | * @param number the number to divide 146 | * @param firstDigit the index within the array of the first non-zero digit 147 | * (this is used for optimization by skipping the leading zeros) 148 | * @param base the base in which the number's digits are represented (up to 149 | * 256) 150 | * @param divisor the number to divide by (up to 256) 151 | * @return the remainder of the division operation 152 | */ 153 | private static byte divmod(byte[] number, int firstDigit, int base, int 154 | divisor) { 155 | // this is just long division which accounts for the base of the input digits 156 | int remainder = 0; 157 | for (int i = firstDigit; i < number.length; i++) { 158 | int digit = (int) number[i] & 0xFF; 159 | int temp = remainder * base + digit; 160 | number[i] = (byte) (temp / divisor); 161 | remainder = temp % divisor; 162 | } 163 | return (byte) remainder; 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/BaseVectorTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.wallet.CoinType; 10 | import com.github.orogvany.bip32.wallet.HdAddress; 11 | import com.github.orogvany.bip32.wallet.HdKeyGenerator; 12 | 13 | import java.io.UnsupportedEncodingException; 14 | 15 | public abstract class BaseVectorTest { 16 | 17 | public HdAddress masterNode; 18 | public HdKeyGenerator hdKeyGenerator = new HdKeyGenerator(); 19 | 20 | public BaseVectorTest() throws UnsupportedEncodingException { 21 | masterNode = hdKeyGenerator.getAddressFromSeed(getSeed(), Network.mainnet, CoinType.bitcoin); 22 | } 23 | 24 | protected abstract byte[] getSeed(); 25 | } 26 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/Bip44Test.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.Bip44; 11 | import com.github.orogvany.bip32.wallet.CoinType; 12 | import com.github.orogvany.bip32.wallet.HdAddress; 13 | import org.junit.Test; 14 | 15 | import java.io.UnsupportedEncodingException; 16 | 17 | public class Bip44Test { 18 | private Bip44 bip44 = new Bip44(); 19 | private byte[] seed = Hex.decode("abcdef"); 20 | 21 | @Test 22 | public void testBitcoin() throws UnsupportedEncodingException { 23 | HdAddress address = bip44.getRootAddressFromSeed(seed, Network.mainnet, CoinType.bitcoin); 24 | bip44.getAddress(address, 0); 25 | } 26 | 27 | @Test 28 | public void testSemux() throws UnsupportedEncodingException { 29 | HdAddress address = bip44.getRootAddressFromSeed(seed, Network.mainnet, CoinType.semux); 30 | bip44.getAddress(address, 0); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/BitUtilTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.crypto.BitUtil; 10 | import org.junit.Assert; 11 | import org.junit.Test; 12 | 13 | public class BitUtilTest { 14 | 15 | @Test 16 | public void testCheckBitFromLeft() 17 | { 18 | byte a = 0x01; 19 | //th 8th bit from the left is one 20 | Assert.assertTrue(BitUtil.checkBit(a, 8)); 21 | 22 | a = (byte) 0x80; 23 | Assert.assertTrue(BitUtil.checkBit(a, 1)); 24 | } 25 | 26 | @Test 27 | public void testSetBit() 28 | { 29 | byte a = 0; 30 | a = BitUtil.setBit(a, 1); 31 | Assert.assertEquals(a, (byte) 0x80); 32 | a = BitUtil.setBit(a,5); 33 | Assert.assertEquals(a, (byte) 0x88); 34 | } 35 | 36 | @Test 37 | public void testUnsetBit() 38 | { 39 | byte a = (byte) 0x88; 40 | a = BitUtil.unsetBit(a, 1); 41 | Assert.assertEquals(a, (byte) 0x08); 42 | a = BitUtil.unsetBit(a,5); 43 | Assert.assertEquals(a, (byte) 0x00); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/PublicKeyChainTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.CoinType; 11 | import com.github.orogvany.bip32.wallet.HdAddress; 12 | import com.github.orogvany.bip32.wallet.HdKeyGenerator; 13 | import com.github.orogvany.bip32.wallet.key.Curve; 14 | import com.github.orogvany.bip32.wallet.key.HdPublicKey; 15 | import org.junit.Assert; 16 | import org.junit.Test; 17 | 18 | import java.io.UnsupportedEncodingException; 19 | 20 | public class PublicKeyChainTest { 21 | 22 | public static final byte[] SEED = Hex.decode("000102030405060708090a0b0c0d0e0f"); 23 | 24 | HdKeyGenerator generator = new HdKeyGenerator(); 25 | 26 | @Test 27 | public void testPubKey0() throws UnsupportedEncodingException { 28 | HdAddress rootAddress = generator.getAddressFromSeed(SEED, Network.mainnet, CoinType.bitcoin); 29 | HdAddress address = generator.getAddress(rootAddress, 0, false); 30 | //test that the pub key chain generated from only public key matches the other 31 | HdPublicKey pubKey = generator.getPublicKey(rootAddress.getPublicKey(), 0, false, Curve.bitcoin); 32 | Assert.assertArrayEquals(address.getPublicKey().getKey(), pubKey.getKey()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/SlipVectorOneTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.CoinType; 11 | import com.github.orogvany.bip32.wallet.HdAddress; 12 | import com.github.orogvany.bip32.wallet.HdKeyGenerator; 13 | import com.github.orogvany.bip32.wallet.key.Curve; 14 | import org.junit.Assert; 15 | import org.junit.Test; 16 | 17 | import java.io.UnsupportedEncodingException; 18 | 19 | import static org.junit.Assert.fail; 20 | 21 | public class SlipVectorOneTest { 22 | 23 | public static final byte[] SEED = Hex.decode("000102030405060708090a0b0c0d0e0f"); 24 | public HdKeyGenerator hdKeyGenerator = new HdKeyGenerator(); 25 | 26 | @Test 27 | public void testVectorOneMaster() throws UnsupportedEncodingException { 28 | byte[] fingerprint = Hex.decode("00000000"); 29 | byte[] chainCode = Hex.decode("90046a93de5380a72b5e45010748567d5ea02bbf6522f979e05c0d8d8ca9fffb"); 30 | byte[] privateKey = Hex.decode("2b4be7f19ee27bbf30c667b642d5f4aa69fd169872f8fc3059c08ebae2eb19e7"); 31 | byte[] publicKey = Hex.decode("00a4b2856bfec510abab89753fac1ac0e1112364e7d250545963f135f2a33188ed"); 32 | 33 | HdAddress address = hdKeyGenerator.getAddressFromSeed(SEED, Network.mainnet, CoinType.semux); 34 | 35 | Assert.assertArrayEquals(fingerprint, address.getPrivateKey().getFingerprint()); 36 | Assert.assertArrayEquals(chainCode, address.getPrivateKey().getChainCode()); 37 | Assert.assertArrayEquals(privateKey, address.getPrivateKey().getPrivateKey()); 38 | Assert.assertArrayEquals(publicKey, address.getPublicKey().getPublicKey()); 39 | Assert.assertEquals(Curve.ed25519, address.getCoinType().getCurve()); 40 | } 41 | 42 | @Test 43 | public void testUnableToPublicChain() throws UnsupportedEncodingException { 44 | HdAddress address = hdKeyGenerator.getAddressFromSeed(SEED, Network.mainnet, CoinType.semux); 45 | try { 46 | hdKeyGenerator.getPublicKey(address.getPublicKey(), 0, false, Curve.ed25519); 47 | fail("Should not be able to chain public keys with ed25519"); 48 | 49 | } catch (UnsupportedOperationException e) { 50 | // expected 51 | } 52 | } 53 | 54 | @Test 55 | public void testVector0H() throws UnsupportedEncodingException { 56 | byte[] fingerprint = Hex.decode("ddebc675"); 57 | byte[] chainCode = Hex.decode("8b59aa11380b624e81507a27fedda59fea6d0b779a778918a2fd3590e16e9c69"); 58 | byte[] privateKey = Hex.decode("68e0fe46dfb67e368c75379acec591dad19df3cde26e63b93a8e704f1dade7a3"); 59 | byte[] publicKey = Hex.decode("008c8a13df77a28f3445213a0f432fde644acaa215fc72dcdf300d5efaa85d350c"); 60 | 61 | HdAddress master = hdKeyGenerator.getAddressFromSeed(SEED, Network.mainnet, CoinType.semux); 62 | HdAddress address = hdKeyGenerator.getAddress(master, 0, true); 63 | 64 | Assert.assertArrayEquals(fingerprint, address.getPrivateKey().getFingerprint()); 65 | Assert.assertArrayEquals(chainCode, address.getPrivateKey().getChainCode()); 66 | Assert.assertArrayEquals(privateKey, address.getPrivateKey().getPrivateKey()); 67 | Assert.assertArrayEquals(publicKey, address.getPublicKey().getPublicKey()); 68 | Assert.assertEquals(Curve.ed25519, address.getCoinType().getCurve()); 69 | } 70 | 71 | @Test 72 | public void testVector0H1H() throws UnsupportedEncodingException { 73 | byte[] fingerprint = Hex.decode("13dab143"); 74 | byte[] chainCode = Hex.decode("a320425f77d1b5c2505a6b1b27382b37368ee640e3557c315416801243552f14"); 75 | byte[] privateKey = Hex.decode("b1d0bad404bf35da785a64ca1ac54b2617211d2777696fbffaf208f746ae84f2"); 76 | byte[] publicKey = Hex.decode("001932a5270f335bed617d5b935c80aedb1a35bd9fc1e31acafd5372c30f5c1187"); 77 | 78 | HdAddress master = hdKeyGenerator.getAddressFromSeed(SEED, Network.mainnet, CoinType.semux); 79 | HdAddress address = hdKeyGenerator.getAddress(master, 0, true); 80 | address = hdKeyGenerator.getAddress(address, 1, true); 81 | 82 | Assert.assertArrayEquals(fingerprint, address.getPrivateKey().getFingerprint()); 83 | Assert.assertArrayEquals(chainCode, address.getPrivateKey().getChainCode()); 84 | Assert.assertArrayEquals(privateKey, address.getPrivateKey().getPrivateKey()); 85 | Assert.assertArrayEquals(publicKey, address.getPublicKey().getPublicKey()); 86 | Assert.assertEquals(Curve.ed25519, address.getCoinType().getCurve()); 87 | } 88 | 89 | @Test 90 | public void testVector0H1H2H() throws UnsupportedEncodingException { 91 | byte[] fingerprint = Hex.decode("ebe4cb29"); 92 | byte[] chainCode = Hex.decode("2e69929e00b5ab250f49c3fb1c12f252de4fed2c1db88387094a0f8c4c9ccd6c"); 93 | byte[] privateKey = Hex.decode("92a5b23c0b8a99e37d07df3fb9966917f5d06e02ddbd909c7e184371463e9fc9"); 94 | byte[] publicKey = Hex.decode("00ae98736566d30ed0e9d2f4486a64bc95740d89c7db33f52121f8ea8f76ff0fc1"); 95 | 96 | HdAddress master = hdKeyGenerator.getAddressFromSeed(SEED, Network.mainnet, CoinType.semux); 97 | HdAddress address = hdKeyGenerator.getAddress(master, 0, true); 98 | address = hdKeyGenerator.getAddress(address, 1, true); 99 | address = hdKeyGenerator.getAddress(address, 2, true); 100 | 101 | Assert.assertArrayEquals(fingerprint, address.getPrivateKey().getFingerprint()); 102 | Assert.assertArrayEquals(chainCode, address.getPrivateKey().getChainCode()); 103 | Assert.assertArrayEquals(privateKey, address.getPrivateKey().getPrivateKey()); 104 | Assert.assertArrayEquals(publicKey, address.getPublicKey().getPublicKey()); 105 | Assert.assertEquals(Curve.ed25519, address.getCoinType().getCurve()); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/VectorOneTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.HdAddress; 11 | import org.junit.Test; 12 | 13 | import java.io.UnsupportedEncodingException; 14 | 15 | import static org.junit.Assert.assertEquals; 16 | 17 | /** 18 | * Test vector from https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki 19 | */ 20 | public class VectorOneTest extends BaseVectorTest { 21 | 22 | public static final byte[] SEED = Hex.decode("000102030405060708090a0b0c0d0e0f"); 23 | 24 | public VectorOneTest() throws UnsupportedEncodingException { 25 | super(); 26 | } 27 | 28 | @Test 29 | public void testMasterNodePrivateKey() { 30 | String expected = "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"; 31 | assertEquals(expected, Base58.encode(masterNode.getPrivateKey().getKey())); 32 | } 33 | 34 | @Test 35 | public void testMasterNodePublicKey() { 36 | String expected = "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"; 37 | assertEquals(expected, Base58.encode(masterNode.getPublicKey().getKey())); 38 | } 39 | 40 | @Test 41 | public void testChain0HPrivateKey() { 42 | //this is hardened 43 | String expected = "xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7"; 44 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 45 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 46 | } 47 | 48 | @Test 49 | public void testChain0HPublicKey() { 50 | String expected = "xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw"; 51 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 52 | assertEquals(expected, Base58.encode(chain.getPublicKey().getKey())); 53 | } 54 | 55 | @Test 56 | public void testChain0H1PrivateKey() { 57 | String expected = "xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs"; 58 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 59 | chain = hdKeyGenerator.getAddress(chain,1, false); 60 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 61 | } 62 | 63 | @Test 64 | public void testChain0H1PublicKey() { 65 | String expected = "xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ"; 66 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 67 | chain = hdKeyGenerator.getAddress(chain,1, false); 68 | assertEquals(expected, Base58.encode(chain.getPublicKey().getKey())); 69 | } 70 | 71 | @Test 72 | public void testChain0H12HPrivateKey() { 73 | String expected = "xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptWmT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM"; 74 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 75 | chain = hdKeyGenerator.getAddress(chain,1, false); 76 | chain = hdKeyGenerator.getAddress(chain,2, true); 77 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 78 | } 79 | 80 | @Test 81 | public void testChain0H12HPublicKey() { 82 | String expected = "xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5"; 83 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 84 | chain = hdKeyGenerator.getAddress(chain,1, false); 85 | chain = hdKeyGenerator.getAddress(chain,2, true); 86 | assertEquals(expected, Base58.encode(chain.getPublicKey().getKey())); 87 | } 88 | 89 | @Override 90 | protected byte[] getSeed() { 91 | return SEED; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/VectorThreeTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | * 4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.HdAddress; 11 | import org.junit.Test; 12 | 13 | import java.io.UnsupportedEncodingException; 14 | 15 | import static org.junit.Assert.assertEquals; 16 | 17 | public class VectorThreeTest extends BaseVectorTest { 18 | public static final byte[] SEED = Hex.decode("4b381541583be4423346c643850da4b320e46a87ae3d2a4e6da11eba819cd4acba45d239319ac14f863b8d5ab5a0d0c64d2e8a1e7d1457df2e5a3c51c73235be"); 19 | 20 | public VectorThreeTest() throws UnsupportedEncodingException { 21 | super(); 22 | } 23 | 24 | @Test 25 | public void testMasterNodePrivateKey() { 26 | String expected = "xprv9s21ZrQH143K25QhxbucbDDuQ4naNntJRi4KUfWT7xo4EKsHt2QJDu7KXp1A3u7Bi1j8ph3EGsZ9Xvz9dGuVrtHHs7pXeTzjuxBrCmmhgC6"; 27 | assertEquals(expected, Base58.encode(masterNode.getPrivateKey().getKey())); 28 | } 29 | 30 | @Test 31 | public void testMasterNodePublicKey() { 32 | String expected = "xpub661MyMwAqRbcEZVB4dScxMAdx6d4nFc9nvyvH3v4gJL378CSRZiYmhRoP7mBy6gSPSCYk6SzXPTf3ND1cZAceL7SfJ1Z3GC8vBgp2epUt13"; 33 | assertEquals(expected, Base58.encode(masterNode.getPublicKey().getKey())); 34 | } 35 | 36 | @Test 37 | public void testChain0HPrivateKey() { 38 | String expected = "xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L"; 39 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, true); 40 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 41 | } 42 | 43 | @Override 44 | protected byte[] getSeed() { 45 | return SEED; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip32/VectorTwoTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 orogvany 3 | *

4 | * Distributed under the MIT software license, see the accompanying file 5 | * LICENSE or https://opensource.org/licenses/mit-license.php 6 | */ 7 | package com.github.orogvany.bip32; 8 | 9 | import com.github.orogvany.bip32.extern.Hex; 10 | import com.github.orogvany.bip32.wallet.HdAddress; 11 | import org.junit.Test; 12 | 13 | import java.io.UnsupportedEncodingException; 14 | 15 | import static org.junit.Assert.assertEquals; 16 | 17 | public class VectorTwoTest extends BaseVectorTest { 18 | public static final byte[] SEED = Hex.decode("fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542"); 19 | 20 | public VectorTwoTest() throws UnsupportedEncodingException { 21 | super(); 22 | } 23 | 24 | @Test 25 | public void testMasterNodePrivateKey() { 26 | String expected = "xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U"; 27 | assertEquals(expected, Base58.encode(masterNode.getPrivateKey().getKey())); 28 | } 29 | 30 | @Test 31 | public void testMasterNodePublicKey() { 32 | String expected = "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB"; 33 | assertEquals(expected, Base58.encode(masterNode.getPublicKey().getKey())); 34 | } 35 | 36 | @Test 37 | public void testChain0PrivateKey() { 38 | String expected = "xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt"; 39 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, false); 40 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 41 | } 42 | 43 | @Test 44 | public void testChain0PublicKey() { 45 | String expected = "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"; 46 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, false); 47 | assertEquals(expected, Base58.encode(chain.getPublicKey().getKey())); 48 | } 49 | 50 | @Test 51 | public void testChain0_2147483647HPrivateKey() { 52 | String expected = "xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9"; 53 | HdAddress chain = hdKeyGenerator.getAddress(masterNode, 0, false); 54 | chain = hdKeyGenerator.getAddress(chain, 2147483647, true); 55 | assertEquals(expected, Base58.encode(chain.getPrivateKey().getKey())); 56 | } 57 | 58 | @Override 59 | protected byte[] getSeed() { 60 | return SEED; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip39/MnemonicGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | import java.io.IOException; 7 | 8 | public class MnemonicGeneratorTest { 9 | 10 | @Test 11 | public void testHappyPath() { 12 | 13 | Dictionary dictionary; 14 | try { 15 | dictionary = new Dictionary(Language.english); 16 | } catch (IOException e) { 17 | throw new IllegalArgumentException("Unknown dictionary"); 18 | } 19 | 20 | MnemonicGenerator generator = new MnemonicGenerator(); 21 | 22 | String phrase = generator.getWordlist(128, Language.english); 23 | 24 | byte[] seed = generator.getSeedFromWordlist(phrase, "", Language.english); 25 | byte[] seedAgain = generator.getSeedFromWordlist(phrase, "", Language.english); 26 | Assert.assertArrayEquals(seed, seedAgain); 27 | 28 | String[] words = phrase.split(" "); 29 | 30 | int index = dictionary.indexOf(words[0]); 31 | 32 | 33 | try { 34 | words[0] = "asdf"; 35 | generator.getSeedFromWordlist(String.join(" ", words), "", Language.english); 36 | Assert.fail("Should not allow unknown word"); 37 | } catch (IllegalArgumentException e) { 38 | } 39 | 40 | // try { 41 | // words[0] = dictionary.getWord((index + 1) % 2048); 42 | // generator.getSeedFromWordlist(String.join(" ", words), "", Language.english); 43 | // Assert.fail("Should not allow non-checksum'd words"); 44 | // } catch (IllegalArgumentException e) { 45 | // 46 | // } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip39/Vector.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | public class Vector { 4 | 5 | private byte[] entropy; 6 | private String mnemonic; 7 | private String seed; 8 | private String hdKey; 9 | 10 | public Vector(byte[] entropy, String mnemonic, String seed, String hdKey) { 11 | this.entropy = entropy; 12 | this.mnemonic = mnemonic; 13 | this.seed = seed; 14 | this.hdKey = hdKey; 15 | } 16 | 17 | public byte[] getEntropy() { 18 | return entropy; 19 | } 20 | 21 | public String getMnemonic() { 22 | return mnemonic; 23 | } 24 | 25 | public String getSeed() { 26 | return seed; 27 | } 28 | 29 | public String getHdKey() { 30 | return hdKey; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip39/VectorReader.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | import com.fasterxml.jackson.databind.JsonNode; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import com.fasterxml.jackson.databind.node.ArrayNode; 6 | import com.github.orogvany.bip32.extern.Hex; 7 | 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class VectorReader { 14 | 15 | public List getVectors() throws IOException { 16 | InputStream file = this.getClass().getClassLoader().getResourceAsStream("vector/vector.json"); 17 | ObjectMapper mapper = new ObjectMapper(); 18 | JsonNode tree = mapper.readTree(file); 19 | 20 | JsonNode english = tree.get("english"); 21 | 22 | List vectors = new ArrayList<>(); 23 | for (int i = 0; i < english.size(); i++) { 24 | ArrayNode v = (ArrayNode) english.get(i); 25 | Vector vector = new Vector(Hex.decode(v.get(0).asText()), v.get(1).asText(), v.get(2).asText(), v.get(3).asText()); 26 | vectors.add(vector); 27 | } 28 | 29 | return vectors; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/com/github/orogvany/bip39/VectorTest.java: -------------------------------------------------------------------------------- 1 | package com.github.orogvany.bip39; 2 | 3 | import com.github.orogvany.bip32.Base58; 4 | import com.github.orogvany.bip32.Network; 5 | import com.github.orogvany.bip32.extern.Hex; 6 | import com.github.orogvany.bip32.wallet.CoinType; 7 | import com.github.orogvany.bip32.wallet.HdAddress; 8 | import com.github.orogvany.bip32.wallet.HdKeyGenerator; 9 | import org.junit.Assert; 10 | import org.junit.Test; 11 | 12 | import java.io.IOException; 13 | import java.util.List; 14 | 15 | public class VectorTest { 16 | 17 | @Test 18 | public void testVectors() throws IOException { 19 | MnemonicGenerator generator = new MnemonicGenerator(); 20 | 21 | VectorReader reader = new VectorReader(); 22 | List vectors = reader.getVectors(); 23 | HdKeyGenerator keyGenerator = new HdKeyGenerator(); 24 | 25 | String password = "TREZOR"; 26 | for (Vector vector : vectors) { 27 | String words = generator.getWordlist(vector.getEntropy(), Language.english); 28 | Assert.assertEquals(vector.getMnemonic(), words); 29 | byte[] seed = generator.getSeedFromWordlist(words, password, Language.english); 30 | Assert.assertEquals(vector.getSeed(), Hex.encode(seed)); 31 | HdAddress address = keyGenerator.getAddressFromSeed(seed, Network.mainnet, CoinType.bitcoin); 32 | Assert.assertEquals(vector.getHdKey(), Base58.encode(address.getPrivateKey().getKey())); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/resources/vector/vector.json: -------------------------------------------------------------------------------- 1 | { 2 | "english": [ 3 | [ 4 | "00000000000000000000000000000000", 5 | "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about", 6 | "c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04", 7 | "xprv9s21ZrQH143K3h3fDYiay8mocZ3afhfULfb5GX8kCBdno77K4HiA15Tg23wpbeF1pLfs1c5SPmYHrEpTuuRhxMwvKDwqdKiGJS9XFKzUsAF" 8 | ], 9 | [ 10 | "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", 11 | "legal winner thank year wave sausage worth useful legal winner thank yellow", 12 | "2e8905819b8723fe2c1d161860e5ee1830318dbf49a83bd451cfb8440c28bd6fa457fe1296106559a3c80937a1c1069be3a3a5bd381ee6260e8d9739fce1f607", 13 | "xprv9s21ZrQH143K2gA81bYFHqU68xz1cX2APaSq5tt6MFSLeXnCKV1RVUJt9FWNTbrrryem4ZckN8k4Ls1H6nwdvDTvnV7zEXs2HgPezuVccsq" 14 | ], 15 | [ 16 | "80808080808080808080808080808080", 17 | "letter advice cage absurd amount doctor acoustic avoid letter advice cage above", 18 | "d71de856f81a8acc65e6fc851a38d4d7ec216fd0796d0a6827a3ad6ed5511a30fa280f12eb2e47ed2ac03b5c462a0358d18d69fe4f985ec81778c1b370b652a8", 19 | "xprv9s21ZrQH143K2shfP28KM3nr5Ap1SXjz8gc2rAqqMEynmjt6o1qboCDpxckqXavCwdnYds6yBHZGKHv7ef2eTXy461PXUjBFQg6PrwY4Gzq" 20 | ], 21 | [ 22 | "ffffffffffffffffffffffffffffffff", 23 | "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong", 24 | "ac27495480225222079d7be181583751e86f571027b0497b5b5d11218e0a8a13332572917f0f8e5a589620c6f15b11c61dee327651a14c34e18231052e48c069", 25 | "xprv9s21ZrQH143K2V4oox4M8Zmhi2Fjx5XK4Lf7GKRvPSgydU3mjZuKGCTg7UPiBUD7ydVPvSLtg9hjp7MQTYsW67rZHAXeccqYqrsx8LcXnyd" 26 | ], 27 | [ 28 | "000000000000000000000000000000000000000000000000", 29 | "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent", 30 | "035895f2f481b1b0f01fcf8c289c794660b289981a78f8106447707fdd9666ca06da5a9a565181599b79f53b844d8a71dd9f439c52a3d7b3e8a79c906ac845fa", 31 | "xprv9s21ZrQH143K3mEDrypcZ2usWqFgzKB6jBBx9B6GfC7fu26X6hPRzVjzkqkPvDqp6g5eypdk6cyhGnBngbjeHTe4LsuLG1cCmKJka5SMkmU" 32 | ], 33 | [ 34 | "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", 35 | "legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will", 36 | "f2b94508732bcbacbcc020faefecfc89feafa6649a5491b8c952cede496c214a0c7b3c392d168748f2d4a612bada0753b52a1c7ac53c1e93abd5c6320b9e95dd", 37 | "xprv9s21ZrQH143K3Lv9MZLj16np5GzLe7tDKQfVusBni7toqJGcnKRtHSxUwbKUyUWiwpK55g1DUSsw76TF1T93VT4gz4wt5RM23pkaQLnvBh7" 38 | ], 39 | [ 40 | "808080808080808080808080808080808080808080808080", 41 | "letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always", 42 | "107d7c02a5aa6f38c58083ff74f04c607c2d2c0ecc55501dadd72d025b751bc27fe913ffb796f841c49b1d33b610cf0e91d3aa239027f5e99fe4ce9e5088cd65", 43 | "xprv9s21ZrQH143K3VPCbxbUtpkh9pRG371UCLDz3BjceqP1jz7XZsQ5EnNkYAEkfeZp62cDNj13ZTEVG1TEro9sZ9grfRmcYWLBhCocViKEJae" 44 | ], 45 | [ 46 | "ffffffffffffffffffffffffffffffffffffffffffffffff", 47 | "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when", 48 | "0cd6e5d827bb62eb8fc1e262254223817fd068a74b5b449cc2f667c3f1f985a76379b43348d952e2265b4cd129090758b3e3c2c49103b5051aac2eaeb890a528", 49 | "xprv9s21ZrQH143K36Ao5jHRVhFGDbLP6FCx8BEEmpru77ef3bmA928BxsqvVM27WnvvyfWywiFN8K6yToqMaGYfzS6Db1EHAXT5TuyCLBXUfdm" 50 | ], 51 | [ 52 | "0000000000000000000000000000000000000000000000000000000000000000", 53 | "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art", 54 | "bda85446c68413707090a52022edd26a1c9462295029f2e60cd7c4f2bbd3097170af7a4d73245cafa9c3cca8d561a7c3de6f5d4a10be8ed2a5e608d68f92fcc8", 55 | "xprv9s21ZrQH143K32qBagUJAMU2LsHg3ka7jqMcV98Y7gVeVyNStwYS3U7yVVoDZ4btbRNf4h6ibWpY22iRmXq35qgLs79f312g2kj5539ebPM" 56 | ], 57 | [ 58 | "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", 59 | "legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title", 60 | "bc09fca1804f7e69da93c2f2028eb238c227f2e9dda30cd63699232578480a4021b146ad717fbb7e451ce9eb835f43620bf5c514db0f8add49f5d121449d3e87", 61 | "xprv9s21ZrQH143K3Y1sd2XVu9wtqxJRvybCfAetjUrMMco6r3v9qZTBeXiBZkS8JxWbcGJZyio8TrZtm6pkbzG8SYt1sxwNLh3Wx7to5pgiVFU" 62 | ], 63 | [ 64 | "8080808080808080808080808080808080808080808080808080808080808080", 65 | "letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless", 66 | "c0c519bd0e91a2ed54357d9d1ebef6f5af218a153624cf4f2da911a0ed8f7a09e2ef61af0aca007096df430022f7a2b6fb91661a9589097069720d015e4e982f", 67 | "xprv9s21ZrQH143K3CSnQNYC3MqAAqHwxeTLhDbhF43A4ss4ciWNmCY9zQGvAKUSqVUf2vPHBTSE1rB2pg4avopqSiLVzXEU8KziNnVPauTqLRo" 68 | ], 69 | [ 70 | "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 71 | "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote", 72 | "dd48c104698c30cfe2b6142103248622fb7bb0ff692eebb00089b32d22484e1613912f0a5b694407be899ffd31ed3992c456cdf60f5d4564b8ba3f05a69890ad", 73 | "xprv9s21ZrQH143K2WFF16X85T2QCpndrGwx6GueB72Zf3AHwHJaknRXNF37ZmDrtHrrLSHvbuRejXcnYxoZKvRquTPyp2JiNG3XcjQyzSEgqCB" 74 | ], 75 | [ 76 | "9e885d952ad362caeb4efe34a8e91bd2", 77 | "ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic", 78 | "274ddc525802f7c828d8ef7ddbcdc5304e87ac3535913611fbbfa986d0c9e5476c91689f9c8a54fd55bd38606aa6a8595ad213d4c9c9f9aca3fb217069a41028", 79 | "xprv9s21ZrQH143K2oZ9stBYpoaZ2ktHj7jLz7iMqpgg1En8kKFTXJHsjxry1JbKH19YrDTicVwKPehFKTbmaxgVEc5TpHdS1aYhB2s9aFJBeJH" 80 | ], 81 | [ 82 | "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", 83 | "gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog", 84 | "628c3827a8823298ee685db84f55caa34b5cc195a778e52d45f59bcf75aba68e4d7590e101dc414bc1bbd5737666fbbef35d1f1903953b66624f910feef245ac", 85 | "xprv9s21ZrQH143K3uT8eQowUjsxrmsA9YUuQQK1RLqFufzybxD6DH6gPY7NjJ5G3EPHjsWDrs9iivSbmvjc9DQJbJGatfa9pv4MZ3wjr8qWPAK" 86 | ], 87 | [ 88 | "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", 89 | "hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length", 90 | "64c87cde7e12ecf6704ab95bb1408bef047c22db4cc7491c4271d170a1b213d20b385bc1588d9c7b38f1b39d415665b8a9030c9ec653d75e65f847d8fc1fc440", 91 | "xprv9s21ZrQH143K2XTAhys3pMNcGn261Fi5Ta2Pw8PwaVPhg3D8DWkzWQwjTJfskj8ofb81i9NP2cUNKxwjueJHHMQAnxtivTA75uUFqPFeWzk" 92 | ], 93 | [ 94 | "c0ba5a8e914111210f2bd131f3d5e08d", 95 | "scheme spot photo card baby mountain device kick cradle pact join borrow", 96 | "ea725895aaae8d4c1cf682c1bfd2d358d52ed9f0f0591131b559e2724bb234fca05aa9c02c57407e04ee9dc3b454aa63fbff483a8b11de949624b9f1831a9612", 97 | "xprv9s21ZrQH143K3FperxDp8vFsFycKCRcJGAFmcV7umQmcnMZaLtZRt13QJDsoS5F6oYT6BB4sS6zmTmyQAEkJKxJ7yByDNtRe5asP2jFGhT6" 98 | ], 99 | [ 100 | "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", 101 | "horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave", 102 | "fd579828af3da1d32544ce4db5c73d53fc8acc4ddb1e3b251a31179cdb71e853c56d2fcb11aed39898ce6c34b10b5382772db8796e52837b54468aeb312cfc3d", 103 | "xprv9s21ZrQH143K3R1SfVZZLtVbXEB9ryVxmVtVMsMwmEyEvgXN6Q84LKkLRmf4ST6QrLeBm3jQsb9gx1uo23TS7vo3vAkZGZz71uuLCcywUkt" 104 | ], 105 | [ 106 | "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", 107 | "panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside", 108 | "72be8e052fc4919d2adf28d5306b5474b0069df35b02303de8c1729c9538dbb6fc2d731d5f832193cd9fb6aeecbc469594a70e3dd50811b5067f3b88b28c3e8d", 109 | "xprv9s21ZrQH143K2WNnKmssvZYM96VAr47iHUQUTUyUXH3sAGNjhJANddnhw3i3y3pBbRAVk5M5qUGFr4rHbEWwXgX4qrvrceifCYQJbbFDems" 110 | ], 111 | [ 112 | "23db8160a31d3e0dca3688ed941adbf3", 113 | "cat swing flag economy stadium alone churn speed unique patch report train", 114 | "deb5f45449e615feff5640f2e49f933ff51895de3b4381832b3139941c57b59205a42480c52175b6efcffaa58a2503887c1e8b363a707256bdd2b587b46541f5", 115 | "xprv9s21ZrQH143K4G28omGMogEoYgDQuigBo8AFHAGDaJdqQ99QKMQ5J6fYTMfANTJy6xBmhvsNZ1CJzRZ64PWbnTFUn6CDV2FxoMDLXdk95DQ" 116 | ], 117 | [ 118 | "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", 119 | "light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access", 120 | "4cbdff1ca2db800fd61cae72a57475fdc6bab03e441fd63f96dabd1f183ef5b782925f00105f318309a7e9c3ea6967c7801e46c8a58082674c860a37b93eda02", 121 | "xprv9s21ZrQH143K3wtsvY8L2aZyxkiWULZH4vyQE5XkHTXkmx8gHo6RUEfH3Jyr6NwkJhvano7Xb2o6UqFKWHVo5scE31SGDCAUsgVhiUuUDyh" 122 | ], 123 | [ 124 | "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", 125 | "all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform", 126 | "26e975ec644423f4a4c4f4215ef09b4bd7ef924e85d1d17c4cf3f136c2863cf6df0a475045652c57eb5fb41513ca2a2d67722b77e954b4b3fc11f7590449191d", 127 | "xprv9s21ZrQH143K3rEfqSM4QZRVmiMuSWY9wugscmaCjYja3SbUD3KPEB1a7QXJoajyR2T1SiXU7rFVRXMV9XdYVSZe7JoUXdP4SRHTxsT1nzm" 128 | ], 129 | [ 130 | "f30f8c1da665478f49b001d94c5fc452", 131 | "vessel ladder alter error federal sibling chat ability sun glass valve picture", 132 | "2aaa9242daafcee6aa9d7269f17d4efe271e1b9a529178d7dc139cd18747090bf9d60295d0ce74309a78852a9caadf0af48aae1c6253839624076224374bc63f", 133 | "xprv9s21ZrQH143K2QWV9Wn8Vvs6jbqfF1YbTCdURQW9dLFKDovpKaKrqS3SEWsXCu6ZNky9PSAENg6c9AQYHcg4PjopRGGKmdD313ZHszymnps" 134 | ], 135 | [ 136 | "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", 137 | "scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump", 138 | "7b4a10be9d98e6cba265566db7f136718e1398c71cb581e1b2f464cac1ceedf4f3e274dc270003c670ad8d02c4558b2f8e39edea2775c9e232c7cb798b069e88", 139 | "xprv9s21ZrQH143K4aERa2bq7559eMCCEs2QmmqVjUuzfy5eAeDX4mqZffkYwpzGQRE2YEEeLVRoH4CSHxianrFaVnMN2RYaPUZJhJx8S5j6puX" 140 | ], 141 | [ 142 | "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", 143 | "void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold", 144 | "01f5bced59dec48e362f2c45b5de68b9fd6c92c6634f44d6d40aab69056506f0e35524a518034ddc1192e1dacd32c1ed3eaa3c3b131c88ed8e7e54c49a5d0998", 145 | "xprv9s21ZrQH143K39rnQJknpH1WEPFJrzmAqqasiDcVrNuk926oizzJDDQkdiTvNPr2FYDYzWgiMiC63YmfPAa2oPyNB23r2g7d1yiK6WpqaQS" 146 | ] 147 | ] 148 | } --------------------------------------------------------------------------------