├── .gitignore ├── LICENSE ├── README.md ├── bintray.gradle ├── build.gradle ├── gradle └── wrapper │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src └── main └── java └── com └── develop └── mnemonic ├── KeyPairUtils.java ├── MnemonicUtils.java ├── crypto ├── Hash.java ├── LinuxSecureRandom.java └── SecureRandomUtils.java ├── utils ├── Numeric.java └── Strings.java └── wordlists ├── English.java ├── French.java ├── Japanese.java ├── Spanish.java └── WordList.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | /.gradle 25 | /.idea 26 | /out 27 | /build 28 | /local.properties 29 | /mnemonic-sdk.iml 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mnemonic-sdk 2 | Mnemonic bip39 bip32 bip44 3 | 4 | 支持 BIP39 助记词 5 | 支持 BIP32 子私钥 6 | 支持 BIP44 多币种管理 7 | 8 | # Install 9 | ``` 10 | Gradle: 11 | 12 | Add dependency: 13 | 14 | dependencies { 15 | implementation 'com.lgann.develop:mnemonic-sdk:1.0.0' 16 | } 17 | 18 | Maven: 19 | 20 | 21 | com.lgann.develop 22 | mnemonic-sdk 23 | 1.0.0 24 | pom 25 | 26 | ``` 27 | # Usage 28 | ## 生成助记词 29 | ``` Java 30 | // 默认生成12个单词的助记词 31 | String mnemonic = MnemonicUtils.generateMnemonic(); 32 | System.out.println("mnemonic = " + mnemonic); 33 | ``` 34 | 助记词:exchange throw faculty fiction require father prefer mask organ crumble journey cricket
35 | 36 | ## 生成种子 37 | ``` Java 38 | // 根据助记词生成种子 39 | byte[] seed = MnemonicUtils.generateSeed(mnemonic, ""); 40 | System.out.println("seed = " + Numeric.toHexString(seed)); 41 | ``` 42 | 43 | 种子: 0x7eaedb7137ef3c3b9da8c2bd976d639455133ef76be73fda9c8342c922c98ca910fe195a5db88c43fa526b3504569f6aa7476d738a6e11f8feb48aa03ae0eac0
44 | 45 | ## 生成一个bip32 私钥 46 | ``` Java 47 | byte[] privateKeyBytes = KeyPairUtils.generatePrivateKey(seed, KeyPairUtils.CoinTypes.EOS); 48 | System.out.println("privateKeyBytes:"+ Numeric.toHexString(privateKeyBytes)); 49 | ``` 50 | 51 | 私钥:0x05b04396cf928446dd14be3d58cad3f64ff7b61730462e14a0722caaaf6a1d49
52 | 53 | generatePrivateKey具体实现如下
54 | 说明:生成的助记词 通过bip32 bip44 转换生成的私钥 可以让同一个 seed 可以支援多币种、多帐户等
55 | ``` Java 56 | // "m/44'/60'/0'/0/0" 57 | // 1. we just need eth wallet for now 58 | AddressIndex addressIndex = BIP44 59 | .m() 60 | .purpose44() 61 | .coinType(coinType) 62 | .account(0) 63 | .external() 64 | .address(0); 65 | // 2. calculate seed from mnemonics , then get master/root key ; 66 | // Note that the bip39 passphrase we set "" for common 67 | ExtendedPrivateKey rootKey = ExtendedPrivateKey.fromSeed(seed, network); 68 | // 3. get child private key deriving from master/root key 69 | ExtendedPrivateKey childPrivateKey = rootKey.derive(addressIndex, AddressIndex.DERIVATION); 70 | // 4. get key pair 71 | byte[] privateKeyBytes = childPrivateKey.getKey(); 72 | ``` 73 | 74 | 如果是ETH钱包开发的话导入了web3j的库 ,可使用ECKeyPair 生成私钥和公钥。
75 | ETH、EOS等账户体系会有所不同,生成私钥和公钥有所区别
76 | ``` Java 77 | // 生成私钥和公钥 78 | ECKeyPair keyPair = ECKeyPair.create(privateKeyBytes); 79 | ``` 80 | 81 | ## 说明 82 | `BIP32`:定义 Hierarchical Deterministic wallet (简称 “HD Wallet”),是一个系统可以从单一个 seed 产生一树状结构储存多组 keypairs(私钥和公钥)。好处是可以方便的备份、转移到其他相容装置(因为都只需要 seed),以及分层的权限控制等。
83 | `BIP39`:将 seed 用方便记忆和书写的单字表示。一般由 12 个单字组成,称为 mnemonic code(phrase),中文称为助记词或助记码。
84 | `BIP44`:基于 BIP32 的系统,赋予树状结构中的各层特殊的意义。让同一个 seed 可以支援多币种、多帐户等。各层定义如下:
85 | ``` Java 86 | m / purpose' / coin_type' / account' / change / address_index 87 | //purporse': 固定值44', 代表是BIP44 88 | //coin_type': 这个代表的是币种, 可以兼容很多种币, 比如BTC是0', ETH是60' 89 | //btc一般是 m/44'/0'/0'/0 90 | //eth一般是 m/44'/60'/0'/0 91 | ``` 92 | 93 | 如果需要测试助记词, 和校验助记词生成的地址, 那么可以访问这个网站: https://iancoleman.io/bip39/
94 |
95 | [Bip44 注册币种列表](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) -------------------------------------------------------------------------------- /bintray.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.github.ben-manes.versions' 2 | apply plugin: 'com.jfrog.bintray' 3 | apply plugin: 'maven-publish' 4 | 5 | task sourcesJar(type: Jar, dependsOn: classes) { 6 | classifier = 'sources' 7 | from sourceSets.main.allSource 8 | } 9 | 10 | task javadocJar(type: Jar, dependsOn: javadoc) { 11 | classifier = 'javadoc' 12 | from javadoc.destinationDir 13 | } 14 | 15 | artifacts { 16 | archives jar 17 | archives sourcesJar 18 | archives javadocJar 19 | } 20 | 21 | publishing { 22 | publications { 23 | MyPublication(MavenPublication) { 24 | from components.java 25 | artifact sourcesJar 26 | artifact javadocJar 27 | groupId group 28 | artifactId project.name 29 | version project.version 30 | } 31 | } 32 | } 33 | 34 | task('installSharedIdea', type: Copy) { 35 | description = "Copy the shared intellij files into local .idea/" 36 | from 'ideaShared/' 37 | into '.idea/' 38 | } 39 | 40 | //gradlew install 41 | //gradlew bintrayUpload -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | } 5 | dependencies { 6 | classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' 7 | classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' 8 | } 9 | } 10 | 11 | apply plugin: 'java' 12 | apply from: 'bintray.gradle' 13 | 14 | // Generate a dependency version update report for release 15 | // ./gradlew dependencyUpdates -Drevision=release 16 | // https://github.com/ben-manes/gradle-versions-plugin 17 | apply plugin: 'com.github.ben-manes.versions' 18 | 19 | 20 | group 'com.lgann.develop' 21 | version '1.0.0' 22 | 23 | 24 | Properties properties = new Properties() 25 | properties.load(project.rootProject.file('local.properties').newDataInputStream()) 26 | // To upload a new version 27 | // ./gradlew clean build bintrayUpload -Puser=user -Pkey=APIKEY 28 | bintray { 29 | user = properties.getProperty("bintray.user") 30 | key = properties.getProperty("bintray.apikey") 31 | publications = ['MyPublication'] 32 | pkg { 33 | repo = 'maven' 34 | name = project.name 35 | licenses = ['Apache-2.0'] 36 | vcsUrl = "https://github.com/gangan1345/mnemonic-sdk.git" 37 | websiteUrl = 'https://github.com/gangan1345/mnemonic-sdk' 38 | version { 39 | name = project.version 40 | } 41 | } 42 | } 43 | 44 | 45 | compileJava { 46 | sourceCompatibility = '1.8' 47 | targetCompatibility = '1.8' 48 | } 49 | 50 | repositories { 51 | mavenCentral() 52 | maven { url "https://dl.bintray.com/lhalcyon/maven/" } 53 | maven { url "https://dl.bintray.com/novacrypto/BIP/" } 54 | maven { url "https://dl.bintray.com/novacrypto/General/" } 55 | maven { url "https://dl.bintray.com/novacrypto/Hashing/" } 56 | } 57 | 58 | dependencies { 59 | testCompile 'junit:junit:4.12' 60 | compile 'org.slf4j:slf4j-nop:1.7.25' 61 | 62 | // compile 'io.github.novacrypto:BIP32:0.0.9' 63 | compile 'com.lhalcyon:bip32:1.0.0' 64 | compile 'io.github.novacrypto:BIP44:0.0.3' 65 | 66 | compile 'com.madgag.spongycastle:core:1.58.0.0@jar' 67 | } 68 | 69 | 70 | compileJava.options.encoding = 'UTF-8' 71 | compileTestJava.options.encoding = 'UTF-8' 72 | javadoc.options.encoding = 'UTF-8' -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'mnemonic-sdk' 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/KeyPairUtils.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic; 2 | 3 | import io.github.novacrypto.bip32.ExtendedPrivateKey; 4 | import io.github.novacrypto.bip32.Network; 5 | import io.github.novacrypto.bip32.networks.Bitcoin; 6 | import io.github.novacrypto.bip44.AddressIndex; 7 | import io.github.novacrypto.bip44.BIP44; 8 | 9 | /** 10 | * 生成bip32 PrivateKey , bip44 + bip32 11 | * 12 | * @author Angus 13 | */ 14 | public class KeyPairUtils { 15 | /** 16 | * 币种类型 17 | */ 18 | public static class CoinTypes { 19 | public static final int BTC = 0; 20 | public static final int BTCTEST = 1; 21 | public static final int LTC = 2; 22 | public static final int ETH = 60; 23 | public static final int EOS = 194; 24 | } 25 | 26 | /** 27 | * 生成 a bip32 private key 28 | * 29 | * @param mnemonic 30 | * @param coinType 31 | * @return 32 | */ 33 | public static byte[] generatePrivateKey(String mnemonic, int coinType) { 34 | byte[] seed = MnemonicUtils.generateSeed(mnemonic, ""); 35 | return generatePrivateKey(seed, coinType, Bitcoin.MAIN_NET); 36 | } 37 | 38 | public static byte[] generatePrivateKey(byte[] seed, int coinType) { 39 | return generatePrivateKey(seed, coinType, Bitcoin.MAIN_NET); 40 | } 41 | 42 | public static byte[] generatePrivateKey(byte[] seed, int coinType, final Network network) { 43 | // 1. we just need eth wallet for now 44 | AddressIndex addressIndex = BIP44 45 | .m() 46 | .purpose44() 47 | .coinType(coinType) 48 | .account(0) 49 | .external() 50 | .address(0); 51 | // 2. calculate seed from mnemonics , then get master/root key ; Note that the bip39 passphrase we set "" for common 52 | ExtendedPrivateKey rootKey = ExtendedPrivateKey.fromSeed(seed, network); 53 | // 3. get child private key deriving from master/root key 54 | ExtendedPrivateKey childPrivateKey = rootKey.derive(addressIndex, AddressIndex.DERIVATION); 55 | // 4. get key pair 56 | byte[] privateKeyBytes = childPrivateKey.getKey(); 57 | return privateKeyBytes; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/MnemonicUtils.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic; 2 | 3 | import com.develop.mnemonic.crypto.Hash; 4 | import com.develop.mnemonic.crypto.SecureRandomUtils; 5 | import com.develop.mnemonic.utils.Numeric; 6 | import com.develop.mnemonic.wordlists.English; 7 | import com.develop.mnemonic.wordlists.WordList; 8 | import org.spongycastle.crypto.digests.SHA512Digest; 9 | import org.spongycastle.crypto.generators.PKCS5S2ParametersGenerator; 10 | import org.spongycastle.crypto.params.KeyParameter; 11 | 12 | import java.nio.charset.Charset; 13 | import java.security.SecureRandom; 14 | import java.util.Arrays; 15 | 16 | /** 17 | * source org.web3j.crypto.MnemonicUtils 更改助记词读取方式 18 | * 19 | * @author Angus 20 | */ 21 | public class MnemonicUtils { 22 | private static final int SEED_ITERATIONS = 2048; 23 | private static final int SEED_KEY_SIZE = 512; 24 | 25 | private static final SecureRandom secureRandom = SecureRandomUtils.secureRandom(); 26 | 27 | /** 28 | * 生成助记词, 默认生成英文, 12个单词 29 | * 30 | * @return 31 | */ 32 | public static String generateMnemonic() { 33 | return generateMnemonic(English.INSTANCE); 34 | } 35 | 36 | /** 37 | * 生成助记词 38 | * 39 | * @param type 40 | * @return 41 | */ 42 | public static String generateMnemonic(WordList type) { 43 | byte[] initialEntropy = new byte[16]; 44 | secureRandom.nextBytes(initialEntropy); 45 | 46 | String mnemonic = generateMnemonic(initialEntropy, type); 47 | return mnemonic; 48 | } 49 | 50 | /** 51 | * The mnemonic must encode entropy in a multiple of 32 bits. With more entropy security is 52 | * improved but the sentence length increases. We refer to the initial entropy length as ENT. 53 | * The allowed size of ENT is 128-256 bits. 54 | * 55 | *

Mnemonic generation algorithm

56 | * Given a randomly generated initial entropy of size ENT, first a checksum is generated by 57 | * taking the first {@code ENT / 32} bits of its SHA256 hash. This checksum is appended to 58 | * the end of the initial entropy. Next, these concatenated bits are split into groups of 59 | * 11 bits, each encoding a number from 0-2047, serving as an index into a wordlist. Finally, 60 | * we convert these numbers into words and use the joined words as a mnemonic sentence. 61 | * 62 | * @param initialEntropy The initial entropy to generate mnemonic from 63 | * @return The generated mnemonic 64 | * @throws IllegalArgumentException If the given entropy is invalid 65 | */ 66 | public static String generateMnemonic(byte[] initialEntropy, WordList wordList) { 67 | validateInitialEntropy(initialEntropy); 68 | 69 | int ent = initialEntropy.length * 8; 70 | int checksumLength = ent / 32; 71 | 72 | byte checksum = calculateChecksum(initialEntropy); 73 | boolean[] bits = convertToBits(initialEntropy, checksum); 74 | 75 | int iterations = (ent + checksumLength) / 11; 76 | StringBuilder mnemonicBuilder = new StringBuilder(); 77 | for (int i = 0; i < iterations; i++) { 78 | int index = toInt(nextElevenBits(bits, i)); 79 | mnemonicBuilder.append(wordList.getWord(index)); 80 | 81 | boolean notLastIteration = i < iterations - 1; 82 | if (notLastIteration) { 83 | mnemonicBuilder.append(" "); 84 | } 85 | } 86 | 87 | return mnemonicBuilder.toString(); 88 | } 89 | 90 | /** 91 | * To create a binary seed from the mnemonic, we use the PBKDF2 function with a 92 | * mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" 93 | * + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set 94 | * to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the 95 | * derived key is 512 bits (= 64 bytes). 96 | * 97 | * @param mnemonic The input mnemonic which should be 128-160 bits in length containing 98 | * only valid words 99 | * @param passphrase The passphrase which will be used as part of salt for PBKDF2 100 | * function 101 | * @return Byte array representation of the generated seed 102 | */ 103 | public static byte[] generateSeed(String mnemonic, String passphrase) { 104 | validateMnemonic(mnemonic); 105 | passphrase = passphrase == null ? "" : passphrase; 106 | 107 | String salt = String.format("mnemonic%s", passphrase); 108 | PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA512Digest()); 109 | gen.init(mnemonic.getBytes(Charset.forName("UTF-8")), salt.getBytes(Charset.forName("UTF-8")), SEED_ITERATIONS); 110 | 111 | return ((KeyParameter) gen.generateDerivedParameters(SEED_KEY_SIZE)).getKey(); 112 | } 113 | 114 | private static void validateMnemonic(String mnemonic) { 115 | if (mnemonic == null || mnemonic.trim().isEmpty()) { 116 | throw new IllegalArgumentException("Mnemonic is required to generate a seed"); 117 | } 118 | } 119 | 120 | private static boolean[] nextElevenBits(boolean[] bits, int i) { 121 | int from = i * 11; 122 | int to = from + 11; 123 | return Arrays.copyOfRange(bits, from, to); 124 | } 125 | 126 | private static void validateInitialEntropy(byte[] initialEntropy) { 127 | if (initialEntropy == null) { 128 | throw new IllegalArgumentException("Initial entropy is required"); 129 | } 130 | 131 | int ent = initialEntropy.length * 8; 132 | if (ent < 128 || ent > 256 || ent % 32 != 0) { 133 | throw new IllegalArgumentException("The allowed size of ENT is 128-256 bits of " 134 | + "multiples of 32"); 135 | } 136 | } 137 | 138 | private static boolean[] convertToBits(byte[] initialEntropy, byte checksum) { 139 | int ent = initialEntropy.length * 8; 140 | int checksumLength = ent / 32; 141 | int totalLength = ent + checksumLength; 142 | boolean[] bits = new boolean[totalLength]; 143 | 144 | for (int i = 0; i < initialEntropy.length; i++) { 145 | for (int j = 0; j < 8; j++) { 146 | byte b = initialEntropy[i]; 147 | bits[8 * i + j] = toBit(b, j); 148 | } 149 | } 150 | 151 | for (int i = 0; i < checksumLength; i++) { 152 | bits[ent + i] = toBit(checksum, i); 153 | } 154 | 155 | return bits; 156 | } 157 | 158 | private static boolean toBit(byte value, int index) { 159 | return ((value >>> (7 - index)) & 1) > 0; 160 | } 161 | 162 | private static int toInt(boolean[] bits) { 163 | int value = 0; 164 | for (int i = 0; i < bits.length; i++) { 165 | boolean isSet = bits[i]; 166 | if (isSet) { 167 | value += 1 << bits.length - i - 1; 168 | } 169 | } 170 | 171 | return value; 172 | } 173 | 174 | private static byte calculateChecksum(byte[] initialEntropy) { 175 | int ent = initialEntropy.length * 8; 176 | byte mask = (byte) (0xff << 8 - ent / 32); 177 | byte[] bytes = Hash.sha256(initialEntropy); 178 | 179 | return (byte) (bytes[0] & mask); 180 | } 181 | 182 | public static final void main(String[] args) { 183 | String mnemonic = MnemonicUtils.generateMnemonic(); 184 | System.out.println("mnemonic = " + mnemonic); 185 | 186 | byte[] seed = MnemonicUtils.generateSeed(mnemonic, ""); 187 | System.out.println("seed = " + Numeric.toHexString(seed)); 188 | } 189 | } 190 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/crypto/Hash.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic.crypto; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | /** 7 | * @author Angus 8 | */ 9 | public class Hash { 10 | 11 | /** 12 | * Generates SHA-256 digest for the given {@code input}. 13 | * 14 | * @param input The input to digest 15 | * @return The hash value for the given input 16 | * @throws RuntimeException If we couldn't find any SHA-256 provider 17 | */ 18 | public static byte[] sha256(byte[] input) { 19 | try { 20 | MessageDigest digest = MessageDigest.getInstance("SHA-256"); 21 | return digest.digest(input); 22 | } catch (NoSuchAlgorithmException e) { 23 | throw new RuntimeException("Couldn't find a SHA-256 provider", e); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/crypto/LinuxSecureRandom.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.develop.mnemonic.crypto; 18 | 19 | import org.slf4j.Logger; 20 | import org.slf4j.LoggerFactory; 21 | 22 | import java.io.*; 23 | import java.security.Provider; 24 | import java.security.SecureRandomSpi; 25 | import java.security.Security; 26 | 27 | /** 28 | * Implementation from 29 | * BitcoinJ implementation 30 | * 31 | *

A SecureRandom implementation that is able to override the standard JVM provided 32 | * implementation, and which simply serves random numbers by reading /dev/urandom. That is, it 33 | * delegates to the kernel on UNIX systems and is unusable on other platforms. Attempts to manually 34 | * set the seed are ignored. There is no difference between seed bytes and non-seed bytes, they are 35 | * all from the same source. 36 | */ 37 | public class LinuxSecureRandom extends SecureRandomSpi { 38 | private static final FileInputStream urandom; 39 | 40 | private static class LinuxSecureRandomProvider extends Provider { 41 | public LinuxSecureRandomProvider() { 42 | super("LinuxSecureRandom", 1.0, 43 | "A Linux specific random number provider that uses /dev/urandom"); 44 | put("SecureRandom.LinuxSecureRandom", LinuxSecureRandom.class.getName()); 45 | } 46 | } 47 | 48 | private static final Logger log = LoggerFactory.getLogger(LinuxSecureRandom.class); 49 | 50 | static { 51 | try { 52 | File file = new File("/dev/urandom"); 53 | // This stream is deliberately leaked. 54 | urandom = new FileInputStream(file); 55 | if (urandom.read() == -1) { 56 | throw new RuntimeException("/dev/urandom not readable?"); 57 | } 58 | // Now override the default SecureRandom implementation with this one. 59 | int position = Security.insertProviderAt(new LinuxSecureRandomProvider(), 1); 60 | 61 | if (position != -1) { 62 | log.info("Secure randomness will be read from {} only.", file); 63 | } else { 64 | log.info("Randomness is already secure."); 65 | } 66 | } catch (FileNotFoundException e) { 67 | // Should never happen. 68 | log.error("/dev/urandom does not appear to exist or is not openable"); 69 | throw new RuntimeException(e); 70 | } catch (IOException e) { 71 | log.error("/dev/urandom does not appear to be readable"); 72 | throw new RuntimeException(e); 73 | } 74 | } 75 | 76 | private final DataInputStream dis; 77 | 78 | public LinuxSecureRandom() { 79 | // DataInputStream is not thread safe, so each random object has its own. 80 | dis = new DataInputStream(urandom); 81 | } 82 | 83 | @Override 84 | protected void engineSetSeed(byte[] bytes) { 85 | // Ignore. 86 | } 87 | 88 | @Override 89 | protected void engineNextBytes(byte[] bytes) { 90 | try { 91 | dis.readFully(bytes); // This will block until all the bytes can be read. 92 | } catch (IOException e) { 93 | throw new RuntimeException(e); // Fatal error. Do not attempt to recover from this. 94 | } 95 | } 96 | 97 | @Override 98 | protected byte[] engineGenerateSeed(int i) { 99 | byte[] bits = new byte[i]; 100 | engineNextBytes(bits); 101 | return bits; 102 | } 103 | } -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/crypto/SecureRandomUtils.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic.crypto; 2 | 3 | 4 | import java.security.SecureRandom; 5 | 6 | /** 7 | * source final org.web3j.crypto.SecureRandomUtils 8 | * 9 | * @author Angus 10 | */ 11 | public class SecureRandomUtils { 12 | private static final SecureRandom SECURE_RANDOM; 13 | 14 | static { 15 | if (isAndroidRuntime()) { 16 | new LinuxSecureRandom(); 17 | } 18 | SECURE_RANDOM = new SecureRandom(); 19 | } 20 | 21 | public static SecureRandom secureRandom() { 22 | return SECURE_RANDOM; 23 | } 24 | 25 | // Taken from BitcoinJ implementation 26 | // https://github.com/bitcoinj/bitcoinj/blob/3cb1f6c6c589f84fe6e1fb56bf26d94cccc85429/core/src/main/java/org/bitcoinj/core/Utils.java#L573 27 | private static int isAndroid = -1; 28 | 29 | static boolean isAndroidRuntime() { 30 | if (isAndroid == -1) { 31 | final String runtime = System.getProperty("java.runtime.name"); 32 | isAndroid = (runtime != null && runtime.equals("Android Runtime")) ? 1 : 0; 33 | } 34 | return isAndroid == 1; 35 | } 36 | 37 | private SecureRandomUtils() { 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/utils/Numeric.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic.utils; 2 | 3 | import java.math.BigDecimal; 4 | import java.math.BigInteger; 5 | import java.util.Arrays; 6 | 7 | /** 8 | * @author Angus 9 | */ 10 | public class Numeric { 11 | 12 | private static final String HEX_PREFIX = "0x"; 13 | 14 | private static boolean isValidHexQuantity(String value) { 15 | if (value == null) { 16 | return false; 17 | } 18 | 19 | if (value.length() < 3) { 20 | return false; 21 | } 22 | 23 | if (!value.startsWith(HEX_PREFIX)) { 24 | return false; 25 | } 26 | 27 | // If TestRpc resolves the following issue, we can reinstate this code 28 | // https://github.com/ethereumjs/testrpc/issues/220 29 | // if (value.length() > 3 && value.charAt(2) == '0') { 30 | // return false; 31 | // } 32 | 33 | return true; 34 | } 35 | 36 | public static String cleanHexPrefix(String input) { 37 | if (containsHexPrefix(input)) { 38 | return input.substring(2); 39 | } else { 40 | return input; 41 | } 42 | } 43 | 44 | public static String prependHexPrefix(String input) { 45 | if (!containsHexPrefix(input)) { 46 | return HEX_PREFIX + input; 47 | } else { 48 | return input; 49 | } 50 | } 51 | 52 | public static boolean containsHexPrefix(String input) { 53 | return input.length() > 1 && input.charAt(0) == '0' && input.charAt(1) == 'x'; 54 | } 55 | 56 | public static BigInteger toBigInt(byte[] value, int offset, int length) { 57 | return toBigInt((Arrays.copyOfRange(value, offset, offset + length))); 58 | } 59 | 60 | public static BigInteger toBigInt(byte[] value) { 61 | return new BigInteger(1, value); 62 | } 63 | 64 | public static BigInteger toBigInt(String hexValue) { 65 | String cleanValue = cleanHexPrefix(hexValue); 66 | return toBigIntNoPrefix(cleanValue); 67 | } 68 | 69 | public static BigInteger toBigIntNoPrefix(String hexValue) { 70 | return new BigInteger(hexValue, 16); 71 | } 72 | 73 | public static String toHexStringWithPrefix(BigInteger value) { 74 | return HEX_PREFIX + value.toString(16); 75 | } 76 | 77 | public static String toHexStringNoPrefix(BigInteger value) { 78 | return value.toString(16); 79 | } 80 | 81 | public static String toHexStringNoPrefix(byte[] input) { 82 | return toHexString(input, 0, input.length, false); 83 | } 84 | 85 | public static String toHexStringWithPrefixZeroPadded(BigInteger value, int size) { 86 | return toHexStringZeroPadded(value, size, true); 87 | } 88 | 89 | public static String toHexStringWithPrefixSafe(BigInteger value) { 90 | String result = toHexStringNoPrefix(value); 91 | if (result.length() < 2) { 92 | result = Strings.zeros(1) + result; 93 | } 94 | return HEX_PREFIX + result; 95 | } 96 | 97 | public static String toHexStringNoPrefixZeroPadded(BigInteger value, int size) { 98 | return toHexStringZeroPadded(value, size, false); 99 | } 100 | 101 | private static String toHexStringZeroPadded(BigInteger value, int size, boolean withPrefix) { 102 | String result = toHexStringNoPrefix(value); 103 | 104 | int length = result.length(); 105 | if (length > size) { 106 | throw new UnsupportedOperationException( 107 | "Value " + result + "is larger then length " + size); 108 | } else if (value.signum() < 0) { 109 | throw new UnsupportedOperationException("Value cannot be negative"); 110 | } 111 | 112 | if (length < size) { 113 | result = Strings.zeros(size - length) + result; 114 | } 115 | 116 | if (withPrefix) { 117 | return HEX_PREFIX + result; 118 | } else { 119 | return result; 120 | } 121 | } 122 | 123 | public static byte[] toBytesPadded(BigInteger value, int length) { 124 | byte[] result = new byte[length]; 125 | byte[] bytes = value.toByteArray(); 126 | 127 | int bytesLength; 128 | int srcOffset; 129 | if (bytes[0] == 0) { 130 | bytesLength = bytes.length - 1; 131 | srcOffset = 1; 132 | } else { 133 | bytesLength = bytes.length; 134 | srcOffset = 0; 135 | } 136 | 137 | if (bytesLength > length) { 138 | throw new RuntimeException("Input is too large to put in byte array of size " + length); 139 | } 140 | 141 | int destOffset = length - bytesLength; 142 | System.arraycopy(bytes, srcOffset, result, destOffset, bytesLength); 143 | return result; 144 | } 145 | 146 | public static byte[] hexStringToByteArray(String input) { 147 | String cleanInput = cleanHexPrefix(input); 148 | 149 | int len = cleanInput.length(); 150 | 151 | if (len == 0) { 152 | return new byte[]{}; 153 | } 154 | 155 | byte[] data; 156 | int startIdx; 157 | if (len % 2 != 0) { 158 | data = new byte[(len / 2) + 1]; 159 | data[0] = (byte) Character.digit(cleanInput.charAt(0), 16); 160 | startIdx = 1; 161 | } else { 162 | data = new byte[len / 2]; 163 | startIdx = 0; 164 | } 165 | 166 | for (int i = startIdx; i < len; i += 2) { 167 | data[(i + 1) / 2] = (byte) ((Character.digit(cleanInput.charAt(i), 16) << 4) 168 | + Character.digit(cleanInput.charAt(i + 1), 16)); 169 | } 170 | return data; 171 | } 172 | 173 | public static String toHexString(byte[] input, int offset, int length, boolean withPrefix) { 174 | StringBuilder stringBuilder = new StringBuilder(); 175 | if (withPrefix) { 176 | stringBuilder.append("0x"); 177 | } 178 | for (int i = offset; i < offset + length; i++) { 179 | stringBuilder.append(String.format("%02x", input[i] & 0xFF)); 180 | } 181 | 182 | return stringBuilder.toString(); 183 | } 184 | 185 | public static String toHexString(byte[] input) { 186 | return toHexString(input, 0, input.length, true); 187 | } 188 | 189 | public static byte asByte(int m, int n) { 190 | return (byte) ((m << 4) | n); 191 | } 192 | 193 | public static boolean isIntegerValue(BigDecimal value) { 194 | return value.signum() == 0 195 | || value.scale() <= 0 196 | || value.stripTrailingZeros().scale() <= 0; 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/utils/Strings.java: -------------------------------------------------------------------------------- 1 | package com.develop.mnemonic.utils; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author Angus 7 | */ 8 | public class Strings { 9 | private Strings() { 10 | } 11 | 12 | public static String toCsv(List src) { 13 | return join(src, ", "); 14 | } 15 | 16 | public static String join(List src, String delimiter) { 17 | if (src != null) { 18 | StringBuilder builder = new StringBuilder(); 19 | if (!src.isEmpty()) { 20 | builder.append(src.get(0)); 21 | } 22 | for (int i = 1; i < src.size(); i++) { 23 | builder.append(delimiter).append(src.get(i)); 24 | } 25 | return builder.toString(); 26 | } 27 | return null; 28 | } 29 | 30 | public static String capitaliseFirstLetter(String string) { 31 | if (string == null || string.length() == 0) { 32 | return string; 33 | } else { 34 | return string.substring(0, 1).toUpperCase() + string.substring(1); 35 | } 36 | } 37 | 38 | public static String lowercaseFirstLetter(String string) { 39 | if (string == null || string.length() == 0) { 40 | return string; 41 | } else { 42 | return string.substring(0, 1).toLowerCase() + string.substring(1); 43 | } 44 | } 45 | 46 | public static String zeros(int n) { 47 | return repeat('0', n); 48 | } 49 | 50 | public static String repeat(char value, int n) { 51 | return new String(new char[n]).replace("\0", String.valueOf(value)); 52 | } 53 | 54 | public static boolean isEmpty(String s) { 55 | return s == null || s.length() == 0; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/wordlists/English.java: -------------------------------------------------------------------------------- 1 | /* 2 | * BIP39 library, a Java implementation of BIP39 3 | * Copyright (C) 2017 Alan Evans, NovaCrypto 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | * Original source: https://github.com/NovaCrypto/BIP39 19 | * You can contact the authors via github issues. 20 | */ 21 | 22 | package com.develop.mnemonic.wordlists; 23 | 24 | /** 25 | * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt 26 | */ 27 | public enum English implements WordList { 28 | INSTANCE; 29 | 30 | @Override 31 | public String getWord(final int index) { 32 | return words[index]; 33 | } 34 | 35 | @Override 36 | public char getSpace() { 37 | return ' '; 38 | } 39 | 40 | private final static String[] words = new String[]{ 41 | "abandon", 42 | "ability", 43 | "able", 44 | "about", 45 | "above", 46 | "absent", 47 | "absorb", 48 | "abstract", 49 | "absurd", 50 | "abuse", 51 | "access", 52 | "accident", 53 | "account", 54 | "accuse", 55 | "achieve", 56 | "acid", 57 | "acoustic", 58 | "acquire", 59 | "across", 60 | "act", 61 | "action", 62 | "actor", 63 | "actress", 64 | "actual", 65 | "adapt", 66 | "add", 67 | "addict", 68 | "address", 69 | "adjust", 70 | "admit", 71 | "adult", 72 | "advance", 73 | "advice", 74 | "aerobic", 75 | "affair", 76 | "afford", 77 | "afraid", 78 | "again", 79 | "age", 80 | "agent", 81 | "agree", 82 | "ahead", 83 | "aim", 84 | "air", 85 | "airport", 86 | "aisle", 87 | "alarm", 88 | "album", 89 | "alcohol", 90 | "alert", 91 | "alien", 92 | "all", 93 | "alley", 94 | "allow", 95 | "almost", 96 | "alone", 97 | "alpha", 98 | "already", 99 | "also", 100 | "alter", 101 | "always", 102 | "amateur", 103 | "amazing", 104 | "among", 105 | "amount", 106 | "amused", 107 | "analyst", 108 | "anchor", 109 | "ancient", 110 | "anger", 111 | "angle", 112 | "angry", 113 | "animal", 114 | "ankle", 115 | "announce", 116 | "annual", 117 | "another", 118 | "answer", 119 | "antenna", 120 | "antique", 121 | "anxiety", 122 | "any", 123 | "apart", 124 | "apology", 125 | "appear", 126 | "apple", 127 | "approve", 128 | "april", 129 | "arch", 130 | "arctic", 131 | "area", 132 | "arena", 133 | "argue", 134 | "arm", 135 | "armed", 136 | "armor", 137 | "army", 138 | "around", 139 | "arrange", 140 | "arrest", 141 | "arrive", 142 | "arrow", 143 | "art", 144 | "artefact", 145 | "artist", 146 | "artwork", 147 | "ask", 148 | "aspect", 149 | "assault", 150 | "asset", 151 | "assist", 152 | "assume", 153 | "asthma", 154 | "athlete", 155 | "atom", 156 | "attack", 157 | "attend", 158 | "attitude", 159 | "attract", 160 | "auction", 161 | "audit", 162 | "august", 163 | "aunt", 164 | "author", 165 | "auto", 166 | "autumn", 167 | "average", 168 | "avocado", 169 | "avoid", 170 | "awake", 171 | "aware", 172 | "away", 173 | "awesome", 174 | "awful", 175 | "awkward", 176 | "axis", 177 | "baby", 178 | "bachelor", 179 | "bacon", 180 | "badge", 181 | "bag", 182 | "balance", 183 | "balcony", 184 | "ball", 185 | "bamboo", 186 | "banana", 187 | "banner", 188 | "bar", 189 | "barely", 190 | "bargain", 191 | "barrel", 192 | "base", 193 | "basic", 194 | "basket", 195 | "battle", 196 | "beach", 197 | "bean", 198 | "beauty", 199 | "because", 200 | "become", 201 | "beef", 202 | "before", 203 | "begin", 204 | "behave", 205 | "behind", 206 | "believe", 207 | "below", 208 | "belt", 209 | "bench", 210 | "benefit", 211 | "best", 212 | "betray", 213 | "better", 214 | "between", 215 | "beyond", 216 | "bicycle", 217 | "bid", 218 | "bike", 219 | "bind", 220 | "biology", 221 | "bird", 222 | "birth", 223 | "bitter", 224 | "black", 225 | "blade", 226 | "blame", 227 | "blanket", 228 | "blast", 229 | "bleak", 230 | "bless", 231 | "blind", 232 | "blood", 233 | "blossom", 234 | "blouse", 235 | "blue", 236 | "blur", 237 | "blush", 238 | "board", 239 | "boat", 240 | "body", 241 | "boil", 242 | "bomb", 243 | "bone", 244 | "bonus", 245 | "book", 246 | "boost", 247 | "border", 248 | "boring", 249 | "borrow", 250 | "boss", 251 | "bottom", 252 | "bounce", 253 | "box", 254 | "boy", 255 | "bracket", 256 | "brain", 257 | "brand", 258 | "brass", 259 | "brave", 260 | "bread", 261 | "breeze", 262 | "brick", 263 | "bridge", 264 | "brief", 265 | "bright", 266 | "bring", 267 | "brisk", 268 | "broccoli", 269 | "broken", 270 | "bronze", 271 | "broom", 272 | "brother", 273 | "brown", 274 | "brush", 275 | "bubble", 276 | "buddy", 277 | "budget", 278 | "buffalo", 279 | "build", 280 | "bulb", 281 | "bulk", 282 | "bullet", 283 | "bundle", 284 | "bunker", 285 | "burden", 286 | "burger", 287 | "burst", 288 | "bus", 289 | "business", 290 | "busy", 291 | "butter", 292 | "buyer", 293 | "buzz", 294 | "cabbage", 295 | "cabin", 296 | "cable", 297 | "cactus", 298 | "cage", 299 | "cake", 300 | "call", 301 | "calm", 302 | "camera", 303 | "camp", 304 | "can", 305 | "canal", 306 | "cancel", 307 | "candy", 308 | "cannon", 309 | "canoe", 310 | "canvas", 311 | "canyon", 312 | "capable", 313 | "capital", 314 | "captain", 315 | "car", 316 | "carbon", 317 | "card", 318 | "cargo", 319 | "carpet", 320 | "carry", 321 | "cart", 322 | "case", 323 | "cash", 324 | "casino", 325 | "castle", 326 | "casual", 327 | "cat", 328 | "catalog", 329 | "catch", 330 | "category", 331 | "cattle", 332 | "caught", 333 | "cause", 334 | "caution", 335 | "cave", 336 | "ceiling", 337 | "celery", 338 | "cement", 339 | "census", 340 | "century", 341 | "cereal", 342 | "certain", 343 | "chair", 344 | "chalk", 345 | "champion", 346 | "change", 347 | "chaos", 348 | "chapter", 349 | "charge", 350 | "chase", 351 | "chat", 352 | "cheap", 353 | "check", 354 | "cheese", 355 | "chef", 356 | "cherry", 357 | "chest", 358 | "chicken", 359 | "chief", 360 | "child", 361 | "chimney", 362 | "choice", 363 | "choose", 364 | "chronic", 365 | "chuckle", 366 | "chunk", 367 | "churn", 368 | "cigar", 369 | "cinnamon", 370 | "circle", 371 | "citizen", 372 | "city", 373 | "civil", 374 | "claim", 375 | "clap", 376 | "clarify", 377 | "claw", 378 | "clay", 379 | "clean", 380 | "clerk", 381 | "clever", 382 | "click", 383 | "client", 384 | "cliff", 385 | "climb", 386 | "clinic", 387 | "clip", 388 | "clock", 389 | "clog", 390 | "close", 391 | "cloth", 392 | "cloud", 393 | "clown", 394 | "club", 395 | "clump", 396 | "cluster", 397 | "clutch", 398 | "coach", 399 | "coast", 400 | "coconut", 401 | "code", 402 | "coffee", 403 | "coil", 404 | "coin", 405 | "collect", 406 | "color", 407 | "column", 408 | "combine", 409 | "come", 410 | "comfort", 411 | "comic", 412 | "common", 413 | "company", 414 | "concert", 415 | "conduct", 416 | "confirm", 417 | "congress", 418 | "connect", 419 | "consider", 420 | "control", 421 | "convince", 422 | "cook", 423 | "cool", 424 | "copper", 425 | "copy", 426 | "coral", 427 | "core", 428 | "corn", 429 | "correct", 430 | "cost", 431 | "cotton", 432 | "couch", 433 | "country", 434 | "couple", 435 | "course", 436 | "cousin", 437 | "cover", 438 | "coyote", 439 | "crack", 440 | "cradle", 441 | "craft", 442 | "cram", 443 | "crane", 444 | "crash", 445 | "crater", 446 | "crawl", 447 | "crazy", 448 | "cream", 449 | "credit", 450 | "creek", 451 | "crew", 452 | "cricket", 453 | "crime", 454 | "crisp", 455 | "critic", 456 | "crop", 457 | "cross", 458 | "crouch", 459 | "crowd", 460 | "crucial", 461 | "cruel", 462 | "cruise", 463 | "crumble", 464 | "crunch", 465 | "crush", 466 | "cry", 467 | "crystal", 468 | "cube", 469 | "culture", 470 | "cup", 471 | "cupboard", 472 | "curious", 473 | "current", 474 | "curtain", 475 | "curve", 476 | "cushion", 477 | "custom", 478 | "cute", 479 | "cycle", 480 | "dad", 481 | "damage", 482 | "damp", 483 | "dance", 484 | "danger", 485 | "daring", 486 | "dash", 487 | "daughter", 488 | "dawn", 489 | "day", 490 | "deal", 491 | "debate", 492 | "debris", 493 | "decade", 494 | "december", 495 | "decide", 496 | "decline", 497 | "decorate", 498 | "decrease", 499 | "deer", 500 | "defense", 501 | "define", 502 | "defy", 503 | "degree", 504 | "delay", 505 | "deliver", 506 | "demand", 507 | "demise", 508 | "denial", 509 | "dentist", 510 | "deny", 511 | "depart", 512 | "depend", 513 | "deposit", 514 | "depth", 515 | "deputy", 516 | "derive", 517 | "describe", 518 | "desert", 519 | "design", 520 | "desk", 521 | "despair", 522 | "destroy", 523 | "detail", 524 | "detect", 525 | "develop", 526 | "device", 527 | "devote", 528 | "diagram", 529 | "dial", 530 | "diamond", 531 | "diary", 532 | "dice", 533 | "diesel", 534 | "diet", 535 | "differ", 536 | "digital", 537 | "dignity", 538 | "dilemma", 539 | "dinner", 540 | "dinosaur", 541 | "direct", 542 | "dirt", 543 | "disagree", 544 | "discover", 545 | "disease", 546 | "dish", 547 | "dismiss", 548 | "disorder", 549 | "display", 550 | "distance", 551 | "divert", 552 | "divide", 553 | "divorce", 554 | "dizzy", 555 | "doctor", 556 | "document", 557 | "dog", 558 | "doll", 559 | "dolphin", 560 | "domain", 561 | "donate", 562 | "donkey", 563 | "donor", 564 | "door", 565 | "dose", 566 | "double", 567 | "dove", 568 | "draft", 569 | "dragon", 570 | "drama", 571 | "drastic", 572 | "draw", 573 | "dream", 574 | "dress", 575 | "drift", 576 | "drill", 577 | "drink", 578 | "drip", 579 | "drive", 580 | "drop", 581 | "drum", 582 | "dry", 583 | "duck", 584 | "dumb", 585 | "dune", 586 | "during", 587 | "dust", 588 | "dutch", 589 | "duty", 590 | "dwarf", 591 | "dynamic", 592 | "eager", 593 | "eagle", 594 | "early", 595 | "earn", 596 | "earth", 597 | "easily", 598 | "east", 599 | "easy", 600 | "echo", 601 | "ecology", 602 | "economy", 603 | "edge", 604 | "edit", 605 | "educate", 606 | "effort", 607 | "egg", 608 | "eight", 609 | "either", 610 | "elbow", 611 | "elder", 612 | "electric", 613 | "elegant", 614 | "element", 615 | "elephant", 616 | "elevator", 617 | "elite", 618 | "else", 619 | "embark", 620 | "embody", 621 | "embrace", 622 | "emerge", 623 | "emotion", 624 | "employ", 625 | "empower", 626 | "empty", 627 | "enable", 628 | "enact", 629 | "end", 630 | "endless", 631 | "endorse", 632 | "enemy", 633 | "energy", 634 | "enforce", 635 | "engage", 636 | "engine", 637 | "enhance", 638 | "enjoy", 639 | "enlist", 640 | "enough", 641 | "enrich", 642 | "enroll", 643 | "ensure", 644 | "enter", 645 | "entire", 646 | "entry", 647 | "envelope", 648 | "episode", 649 | "equal", 650 | "equip", 651 | "era", 652 | "erase", 653 | "erode", 654 | "erosion", 655 | "error", 656 | "erupt", 657 | "escape", 658 | "essay", 659 | "essence", 660 | "estate", 661 | "eternal", 662 | "ethics", 663 | "evidence", 664 | "evil", 665 | "evoke", 666 | "evolve", 667 | "exact", 668 | "example", 669 | "excess", 670 | "exchange", 671 | "excite", 672 | "exclude", 673 | "excuse", 674 | "execute", 675 | "exercise", 676 | "exhaust", 677 | "exhibit", 678 | "exile", 679 | "exist", 680 | "exit", 681 | "exotic", 682 | "expand", 683 | "expect", 684 | "expire", 685 | "explain", 686 | "expose", 687 | "express", 688 | "extend", 689 | "extra", 690 | "eye", 691 | "eyebrow", 692 | "fabric", 693 | "face", 694 | "faculty", 695 | "fade", 696 | "faint", 697 | "faith", 698 | "fall", 699 | "false", 700 | "fame", 701 | "family", 702 | "famous", 703 | "fan", 704 | "fancy", 705 | "fantasy", 706 | "farm", 707 | "fashion", 708 | "fat", 709 | "fatal", 710 | "father", 711 | "fatigue", 712 | "fault", 713 | "favorite", 714 | "feature", 715 | "february", 716 | "federal", 717 | "fee", 718 | "feed", 719 | "feel", 720 | "female", 721 | "fence", 722 | "festival", 723 | "fetch", 724 | "fever", 725 | "few", 726 | "fiber", 727 | "fiction", 728 | "field", 729 | "figure", 730 | "file", 731 | "film", 732 | "filter", 733 | "final", 734 | "find", 735 | "fine", 736 | "finger", 737 | "finish", 738 | "fire", 739 | "firm", 740 | "first", 741 | "fiscal", 742 | "fish", 743 | "fit", 744 | "fitness", 745 | "fix", 746 | "flag", 747 | "flame", 748 | "flash", 749 | "flat", 750 | "flavor", 751 | "flee", 752 | "flight", 753 | "flip", 754 | "float", 755 | "flock", 756 | "floor", 757 | "flower", 758 | "fluid", 759 | "flush", 760 | "fly", 761 | "foam", 762 | "focus", 763 | "fog", 764 | "foil", 765 | "fold", 766 | "follow", 767 | "food", 768 | "foot", 769 | "force", 770 | "forest", 771 | "forget", 772 | "fork", 773 | "fortune", 774 | "forum", 775 | "forward", 776 | "fossil", 777 | "foster", 778 | "found", 779 | "fox", 780 | "fragile", 781 | "frame", 782 | "frequent", 783 | "fresh", 784 | "friend", 785 | "fringe", 786 | "frog", 787 | "front", 788 | "frost", 789 | "frown", 790 | "frozen", 791 | "fruit", 792 | "fuel", 793 | "fun", 794 | "funny", 795 | "furnace", 796 | "fury", 797 | "future", 798 | "gadget", 799 | "gain", 800 | "galaxy", 801 | "gallery", 802 | "game", 803 | "gap", 804 | "garage", 805 | "garbage", 806 | "garden", 807 | "garlic", 808 | "garment", 809 | "gas", 810 | "gasp", 811 | "gate", 812 | "gather", 813 | "gauge", 814 | "gaze", 815 | "general", 816 | "genius", 817 | "genre", 818 | "gentle", 819 | "genuine", 820 | "gesture", 821 | "ghost", 822 | "giant", 823 | "gift", 824 | "giggle", 825 | "ginger", 826 | "giraffe", 827 | "girl", 828 | "give", 829 | "glad", 830 | "glance", 831 | "glare", 832 | "glass", 833 | "glide", 834 | "glimpse", 835 | "globe", 836 | "gloom", 837 | "glory", 838 | "glove", 839 | "glow", 840 | "glue", 841 | "goat", 842 | "goddess", 843 | "gold", 844 | "good", 845 | "goose", 846 | "gorilla", 847 | "gospel", 848 | "gossip", 849 | "govern", 850 | "gown", 851 | "grab", 852 | "grace", 853 | "grain", 854 | "grant", 855 | "grape", 856 | "grass", 857 | "gravity", 858 | "great", 859 | "green", 860 | "grid", 861 | "grief", 862 | "grit", 863 | "grocery", 864 | "group", 865 | "grow", 866 | "grunt", 867 | "guard", 868 | "guess", 869 | "guide", 870 | "guilt", 871 | "guitar", 872 | "gun", 873 | "gym", 874 | "habit", 875 | "hair", 876 | "half", 877 | "hammer", 878 | "hamster", 879 | "hand", 880 | "happy", 881 | "harbor", 882 | "hard", 883 | "harsh", 884 | "harvest", 885 | "hat", 886 | "have", 887 | "hawk", 888 | "hazard", 889 | "head", 890 | "health", 891 | "heart", 892 | "heavy", 893 | "hedgehog", 894 | "height", 895 | "hello", 896 | "helmet", 897 | "help", 898 | "hen", 899 | "hero", 900 | "hidden", 901 | "high", 902 | "hill", 903 | "hint", 904 | "hip", 905 | "hire", 906 | "history", 907 | "hobby", 908 | "hockey", 909 | "hold", 910 | "hole", 911 | "holiday", 912 | "hollow", 913 | "home", 914 | "honey", 915 | "hood", 916 | "hope", 917 | "horn", 918 | "horror", 919 | "horse", 920 | "hospital", 921 | "host", 922 | "hotel", 923 | "hour", 924 | "hover", 925 | "hub", 926 | "huge", 927 | "human", 928 | "humble", 929 | "humor", 930 | "hundred", 931 | "hungry", 932 | "hunt", 933 | "hurdle", 934 | "hurry", 935 | "hurt", 936 | "husband", 937 | "hybrid", 938 | "ice", 939 | "icon", 940 | "idea", 941 | "identify", 942 | "idle", 943 | "ignore", 944 | "ill", 945 | "illegal", 946 | "illness", 947 | "image", 948 | "imitate", 949 | "immense", 950 | "immune", 951 | "impact", 952 | "impose", 953 | "improve", 954 | "impulse", 955 | "inch", 956 | "include", 957 | "income", 958 | "increase", 959 | "index", 960 | "indicate", 961 | "indoor", 962 | "industry", 963 | "infant", 964 | "inflict", 965 | "inform", 966 | "inhale", 967 | "inherit", 968 | "initial", 969 | "inject", 970 | "injury", 971 | "inmate", 972 | "inner", 973 | "innocent", 974 | "input", 975 | "inquiry", 976 | "insane", 977 | "insect", 978 | "inside", 979 | "inspire", 980 | "install", 981 | "intact", 982 | "interest", 983 | "into", 984 | "invest", 985 | "invite", 986 | "involve", 987 | "iron", 988 | "island", 989 | "isolate", 990 | "issue", 991 | "item", 992 | "ivory", 993 | "jacket", 994 | "jaguar", 995 | "jar", 996 | "jazz", 997 | "jealous", 998 | "jeans", 999 | "jelly", 1000 | "jewel", 1001 | "job", 1002 | "join", 1003 | "joke", 1004 | "journey", 1005 | "joy", 1006 | "judge", 1007 | "juice", 1008 | "jump", 1009 | "jungle", 1010 | "junior", 1011 | "junk", 1012 | "just", 1013 | "kangaroo", 1014 | "keen", 1015 | "keep", 1016 | "ketchup", 1017 | "key", 1018 | "kick", 1019 | "kid", 1020 | "kidney", 1021 | "kind", 1022 | "kingdom", 1023 | "kiss", 1024 | "kit", 1025 | "kitchen", 1026 | "kite", 1027 | "kitten", 1028 | "kiwi", 1029 | "knee", 1030 | "knife", 1031 | "knock", 1032 | "know", 1033 | "lab", 1034 | "label", 1035 | "labor", 1036 | "ladder", 1037 | "lady", 1038 | "lake", 1039 | "lamp", 1040 | "language", 1041 | "laptop", 1042 | "large", 1043 | "later", 1044 | "latin", 1045 | "laugh", 1046 | "laundry", 1047 | "lava", 1048 | "law", 1049 | "lawn", 1050 | "lawsuit", 1051 | "layer", 1052 | "lazy", 1053 | "leader", 1054 | "leaf", 1055 | "learn", 1056 | "leave", 1057 | "lecture", 1058 | "left", 1059 | "leg", 1060 | "legal", 1061 | "legend", 1062 | "leisure", 1063 | "lemon", 1064 | "lend", 1065 | "length", 1066 | "lens", 1067 | "leopard", 1068 | "lesson", 1069 | "letter", 1070 | "level", 1071 | "liar", 1072 | "liberty", 1073 | "library", 1074 | "license", 1075 | "life", 1076 | "lift", 1077 | "light", 1078 | "like", 1079 | "limb", 1080 | "limit", 1081 | "link", 1082 | "lion", 1083 | "liquid", 1084 | "list", 1085 | "little", 1086 | "live", 1087 | "lizard", 1088 | "load", 1089 | "loan", 1090 | "lobster", 1091 | "local", 1092 | "lock", 1093 | "logic", 1094 | "lonely", 1095 | "long", 1096 | "loop", 1097 | "lottery", 1098 | "loud", 1099 | "lounge", 1100 | "love", 1101 | "loyal", 1102 | "lucky", 1103 | "luggage", 1104 | "lumber", 1105 | "lunar", 1106 | "lunch", 1107 | "luxury", 1108 | "lyrics", 1109 | "machine", 1110 | "mad", 1111 | "magic", 1112 | "magnet", 1113 | "maid", 1114 | "mail", 1115 | "main", 1116 | "major", 1117 | "make", 1118 | "mammal", 1119 | "man", 1120 | "manage", 1121 | "mandate", 1122 | "mango", 1123 | "mansion", 1124 | "manual", 1125 | "maple", 1126 | "marble", 1127 | "march", 1128 | "margin", 1129 | "marine", 1130 | "market", 1131 | "marriage", 1132 | "mask", 1133 | "mass", 1134 | "master", 1135 | "match", 1136 | "material", 1137 | "math", 1138 | "matrix", 1139 | "matter", 1140 | "maximum", 1141 | "maze", 1142 | "meadow", 1143 | "mean", 1144 | "measure", 1145 | "meat", 1146 | "mechanic", 1147 | "medal", 1148 | "media", 1149 | "melody", 1150 | "melt", 1151 | "member", 1152 | "memory", 1153 | "mention", 1154 | "menu", 1155 | "mercy", 1156 | "merge", 1157 | "merit", 1158 | "merry", 1159 | "mesh", 1160 | "message", 1161 | "metal", 1162 | "method", 1163 | "middle", 1164 | "midnight", 1165 | "milk", 1166 | "million", 1167 | "mimic", 1168 | "mind", 1169 | "minimum", 1170 | "minor", 1171 | "minute", 1172 | "miracle", 1173 | "mirror", 1174 | "misery", 1175 | "miss", 1176 | "mistake", 1177 | "mix", 1178 | "mixed", 1179 | "mixture", 1180 | "mobile", 1181 | "model", 1182 | "modify", 1183 | "mom", 1184 | "moment", 1185 | "monitor", 1186 | "monkey", 1187 | "monster", 1188 | "month", 1189 | "moon", 1190 | "moral", 1191 | "more", 1192 | "morning", 1193 | "mosquito", 1194 | "mother", 1195 | "motion", 1196 | "motor", 1197 | "mountain", 1198 | "mouse", 1199 | "move", 1200 | "movie", 1201 | "much", 1202 | "muffin", 1203 | "mule", 1204 | "multiply", 1205 | "muscle", 1206 | "museum", 1207 | "mushroom", 1208 | "music", 1209 | "must", 1210 | "mutual", 1211 | "myself", 1212 | "mystery", 1213 | "myth", 1214 | "naive", 1215 | "name", 1216 | "napkin", 1217 | "narrow", 1218 | "nasty", 1219 | "nation", 1220 | "nature", 1221 | "near", 1222 | "neck", 1223 | "need", 1224 | "negative", 1225 | "neglect", 1226 | "neither", 1227 | "nephew", 1228 | "nerve", 1229 | "nest", 1230 | "net", 1231 | "network", 1232 | "neutral", 1233 | "never", 1234 | "news", 1235 | "next", 1236 | "nice", 1237 | "night", 1238 | "noble", 1239 | "noise", 1240 | "nominee", 1241 | "noodle", 1242 | "normal", 1243 | "north", 1244 | "nose", 1245 | "notable", 1246 | "note", 1247 | "nothing", 1248 | "notice", 1249 | "novel", 1250 | "now", 1251 | "nuclear", 1252 | "number", 1253 | "nurse", 1254 | "nut", 1255 | "oak", 1256 | "obey", 1257 | "object", 1258 | "oblige", 1259 | "obscure", 1260 | "observe", 1261 | "obtain", 1262 | "obvious", 1263 | "occur", 1264 | "ocean", 1265 | "october", 1266 | "odor", 1267 | "off", 1268 | "offer", 1269 | "office", 1270 | "often", 1271 | "oil", 1272 | "okay", 1273 | "old", 1274 | "olive", 1275 | "olympic", 1276 | "omit", 1277 | "once", 1278 | "one", 1279 | "onion", 1280 | "online", 1281 | "only", 1282 | "open", 1283 | "opera", 1284 | "opinion", 1285 | "oppose", 1286 | "option", 1287 | "orange", 1288 | "orbit", 1289 | "orchard", 1290 | "order", 1291 | "ordinary", 1292 | "organ", 1293 | "orient", 1294 | "original", 1295 | "orphan", 1296 | "ostrich", 1297 | "other", 1298 | "outdoor", 1299 | "outer", 1300 | "output", 1301 | "outside", 1302 | "oval", 1303 | "oven", 1304 | "over", 1305 | "own", 1306 | "owner", 1307 | "oxygen", 1308 | "oyster", 1309 | "ozone", 1310 | "pact", 1311 | "paddle", 1312 | "page", 1313 | "pair", 1314 | "palace", 1315 | "palm", 1316 | "panda", 1317 | "panel", 1318 | "panic", 1319 | "panther", 1320 | "paper", 1321 | "parade", 1322 | "parent", 1323 | "park", 1324 | "parrot", 1325 | "party", 1326 | "pass", 1327 | "patch", 1328 | "path", 1329 | "patient", 1330 | "patrol", 1331 | "pattern", 1332 | "pause", 1333 | "pave", 1334 | "payment", 1335 | "peace", 1336 | "peanut", 1337 | "pear", 1338 | "peasant", 1339 | "pelican", 1340 | "pen", 1341 | "penalty", 1342 | "pencil", 1343 | "people", 1344 | "pepper", 1345 | "perfect", 1346 | "permit", 1347 | "person", 1348 | "pet", 1349 | "phone", 1350 | "photo", 1351 | "phrase", 1352 | "physical", 1353 | "piano", 1354 | "picnic", 1355 | "picture", 1356 | "piece", 1357 | "pig", 1358 | "pigeon", 1359 | "pill", 1360 | "pilot", 1361 | "pink", 1362 | "pioneer", 1363 | "pipe", 1364 | "pistol", 1365 | "pitch", 1366 | "pizza", 1367 | "place", 1368 | "planet", 1369 | "plastic", 1370 | "plate", 1371 | "play", 1372 | "please", 1373 | "pledge", 1374 | "pluck", 1375 | "plug", 1376 | "plunge", 1377 | "poem", 1378 | "poet", 1379 | "point", 1380 | "polar", 1381 | "pole", 1382 | "police", 1383 | "pond", 1384 | "pony", 1385 | "pool", 1386 | "popular", 1387 | "portion", 1388 | "position", 1389 | "possible", 1390 | "post", 1391 | "potato", 1392 | "pottery", 1393 | "poverty", 1394 | "powder", 1395 | "power", 1396 | "practice", 1397 | "praise", 1398 | "predict", 1399 | "prefer", 1400 | "prepare", 1401 | "present", 1402 | "pretty", 1403 | "prevent", 1404 | "price", 1405 | "pride", 1406 | "primary", 1407 | "print", 1408 | "priority", 1409 | "prison", 1410 | "private", 1411 | "prize", 1412 | "problem", 1413 | "process", 1414 | "produce", 1415 | "profit", 1416 | "program", 1417 | "project", 1418 | "promote", 1419 | "proof", 1420 | "property", 1421 | "prosper", 1422 | "protect", 1423 | "proud", 1424 | "provide", 1425 | "public", 1426 | "pudding", 1427 | "pull", 1428 | "pulp", 1429 | "pulse", 1430 | "pumpkin", 1431 | "punch", 1432 | "pupil", 1433 | "puppy", 1434 | "purchase", 1435 | "purity", 1436 | "purpose", 1437 | "purse", 1438 | "push", 1439 | "put", 1440 | "puzzle", 1441 | "pyramid", 1442 | "quality", 1443 | "quantum", 1444 | "quarter", 1445 | "question", 1446 | "quick", 1447 | "quit", 1448 | "quiz", 1449 | "quote", 1450 | "rabbit", 1451 | "raccoon", 1452 | "race", 1453 | "rack", 1454 | "radar", 1455 | "radio", 1456 | "rail", 1457 | "rain", 1458 | "raise", 1459 | "rally", 1460 | "ramp", 1461 | "ranch", 1462 | "random", 1463 | "range", 1464 | "rapid", 1465 | "rare", 1466 | "rate", 1467 | "rather", 1468 | "raven", 1469 | "raw", 1470 | "razor", 1471 | "ready", 1472 | "real", 1473 | "reason", 1474 | "rebel", 1475 | "rebuild", 1476 | "recall", 1477 | "receive", 1478 | "recipe", 1479 | "record", 1480 | "recycle", 1481 | "reduce", 1482 | "reflect", 1483 | "reform", 1484 | "refuse", 1485 | "region", 1486 | "regret", 1487 | "regular", 1488 | "reject", 1489 | "relax", 1490 | "release", 1491 | "relief", 1492 | "rely", 1493 | "remain", 1494 | "remember", 1495 | "remind", 1496 | "remove", 1497 | "render", 1498 | "renew", 1499 | "rent", 1500 | "reopen", 1501 | "repair", 1502 | "repeat", 1503 | "replace", 1504 | "report", 1505 | "require", 1506 | "rescue", 1507 | "resemble", 1508 | "resist", 1509 | "resource", 1510 | "response", 1511 | "result", 1512 | "retire", 1513 | "retreat", 1514 | "return", 1515 | "reunion", 1516 | "reveal", 1517 | "review", 1518 | "reward", 1519 | "rhythm", 1520 | "rib", 1521 | "ribbon", 1522 | "rice", 1523 | "rich", 1524 | "ride", 1525 | "ridge", 1526 | "rifle", 1527 | "right", 1528 | "rigid", 1529 | "ring", 1530 | "riot", 1531 | "ripple", 1532 | "risk", 1533 | "ritual", 1534 | "rival", 1535 | "river", 1536 | "road", 1537 | "roast", 1538 | "robot", 1539 | "robust", 1540 | "rocket", 1541 | "romance", 1542 | "roof", 1543 | "rookie", 1544 | "room", 1545 | "rose", 1546 | "rotate", 1547 | "rough", 1548 | "round", 1549 | "route", 1550 | "royal", 1551 | "rubber", 1552 | "rude", 1553 | "rug", 1554 | "rule", 1555 | "run", 1556 | "runway", 1557 | "rural", 1558 | "sad", 1559 | "saddle", 1560 | "sadness", 1561 | "safe", 1562 | "sail", 1563 | "salad", 1564 | "salmon", 1565 | "salon", 1566 | "salt", 1567 | "salute", 1568 | "same", 1569 | "sample", 1570 | "sand", 1571 | "satisfy", 1572 | "satoshi", 1573 | "sauce", 1574 | "sausage", 1575 | "save", 1576 | "say", 1577 | "scale", 1578 | "scan", 1579 | "scare", 1580 | "scatter", 1581 | "scene", 1582 | "scheme", 1583 | "school", 1584 | "science", 1585 | "scissors", 1586 | "scorpion", 1587 | "scout", 1588 | "scrap", 1589 | "screen", 1590 | "script", 1591 | "scrub", 1592 | "sea", 1593 | "search", 1594 | "season", 1595 | "seat", 1596 | "second", 1597 | "secret", 1598 | "section", 1599 | "security", 1600 | "seed", 1601 | "seek", 1602 | "segment", 1603 | "select", 1604 | "sell", 1605 | "seminar", 1606 | "senior", 1607 | "sense", 1608 | "sentence", 1609 | "series", 1610 | "service", 1611 | "session", 1612 | "settle", 1613 | "setup", 1614 | "seven", 1615 | "shadow", 1616 | "shaft", 1617 | "shallow", 1618 | "share", 1619 | "shed", 1620 | "shell", 1621 | "sheriff", 1622 | "shield", 1623 | "shift", 1624 | "shine", 1625 | "ship", 1626 | "shiver", 1627 | "shock", 1628 | "shoe", 1629 | "shoot", 1630 | "shop", 1631 | "short", 1632 | "shoulder", 1633 | "shove", 1634 | "shrimp", 1635 | "shrug", 1636 | "shuffle", 1637 | "shy", 1638 | "sibling", 1639 | "sick", 1640 | "side", 1641 | "siege", 1642 | "sight", 1643 | "sign", 1644 | "silent", 1645 | "silk", 1646 | "silly", 1647 | "silver", 1648 | "similar", 1649 | "simple", 1650 | "since", 1651 | "sing", 1652 | "siren", 1653 | "sister", 1654 | "situate", 1655 | "six", 1656 | "size", 1657 | "skate", 1658 | "sketch", 1659 | "ski", 1660 | "skill", 1661 | "skin", 1662 | "skirt", 1663 | "skull", 1664 | "slab", 1665 | "slam", 1666 | "sleep", 1667 | "slender", 1668 | "slice", 1669 | "slide", 1670 | "slight", 1671 | "slim", 1672 | "slogan", 1673 | "slot", 1674 | "slow", 1675 | "slush", 1676 | "small", 1677 | "smart", 1678 | "smile", 1679 | "smoke", 1680 | "smooth", 1681 | "snack", 1682 | "snake", 1683 | "snap", 1684 | "sniff", 1685 | "snow", 1686 | "soap", 1687 | "soccer", 1688 | "social", 1689 | "sock", 1690 | "soda", 1691 | "soft", 1692 | "solar", 1693 | "soldier", 1694 | "solid", 1695 | "solution", 1696 | "solve", 1697 | "someone", 1698 | "song", 1699 | "soon", 1700 | "sorry", 1701 | "sort", 1702 | "soul", 1703 | "sound", 1704 | "soup", 1705 | "source", 1706 | "south", 1707 | "space", 1708 | "spare", 1709 | "spatial", 1710 | "spawn", 1711 | "speak", 1712 | "special", 1713 | "speed", 1714 | "spell", 1715 | "spend", 1716 | "sphere", 1717 | "spice", 1718 | "spider", 1719 | "spike", 1720 | "spin", 1721 | "spirit", 1722 | "split", 1723 | "spoil", 1724 | "sponsor", 1725 | "spoon", 1726 | "sport", 1727 | "spot", 1728 | "spray", 1729 | "spread", 1730 | "spring", 1731 | "spy", 1732 | "square", 1733 | "squeeze", 1734 | "squirrel", 1735 | "stable", 1736 | "stadium", 1737 | "staff", 1738 | "stage", 1739 | "stairs", 1740 | "stamp", 1741 | "stand", 1742 | "start", 1743 | "state", 1744 | "stay", 1745 | "steak", 1746 | "steel", 1747 | "stem", 1748 | "step", 1749 | "stereo", 1750 | "stick", 1751 | "still", 1752 | "sting", 1753 | "stock", 1754 | "stomach", 1755 | "stone", 1756 | "stool", 1757 | "story", 1758 | "stove", 1759 | "strategy", 1760 | "street", 1761 | "strike", 1762 | "strong", 1763 | "struggle", 1764 | "student", 1765 | "stuff", 1766 | "stumble", 1767 | "style", 1768 | "subject", 1769 | "submit", 1770 | "subway", 1771 | "success", 1772 | "such", 1773 | "sudden", 1774 | "suffer", 1775 | "sugar", 1776 | "suggest", 1777 | "suit", 1778 | "summer", 1779 | "sun", 1780 | "sunny", 1781 | "sunset", 1782 | "super", 1783 | "supply", 1784 | "supreme", 1785 | "sure", 1786 | "surface", 1787 | "surge", 1788 | "surprise", 1789 | "surround", 1790 | "survey", 1791 | "suspect", 1792 | "sustain", 1793 | "swallow", 1794 | "swamp", 1795 | "swap", 1796 | "swarm", 1797 | "swear", 1798 | "sweet", 1799 | "swift", 1800 | "swim", 1801 | "swing", 1802 | "switch", 1803 | "sword", 1804 | "symbol", 1805 | "symptom", 1806 | "syrup", 1807 | "system", 1808 | "table", 1809 | "tackle", 1810 | "tag", 1811 | "tail", 1812 | "talent", 1813 | "talk", 1814 | "tank", 1815 | "tape", 1816 | "target", 1817 | "task", 1818 | "taste", 1819 | "tattoo", 1820 | "taxi", 1821 | "teach", 1822 | "team", 1823 | "tell", 1824 | "ten", 1825 | "tenant", 1826 | "tennis", 1827 | "tent", 1828 | "term", 1829 | "test", 1830 | "text", 1831 | "thank", 1832 | "that", 1833 | "theme", 1834 | "then", 1835 | "theory", 1836 | "there", 1837 | "they", 1838 | "thing", 1839 | "this", 1840 | "thought", 1841 | "three", 1842 | "thrive", 1843 | "throw", 1844 | "thumb", 1845 | "thunder", 1846 | "ticket", 1847 | "tide", 1848 | "tiger", 1849 | "tilt", 1850 | "timber", 1851 | "time", 1852 | "tiny", 1853 | "tip", 1854 | "tired", 1855 | "tissue", 1856 | "title", 1857 | "toast", 1858 | "tobacco", 1859 | "today", 1860 | "toddler", 1861 | "toe", 1862 | "together", 1863 | "toilet", 1864 | "token", 1865 | "tomato", 1866 | "tomorrow", 1867 | "tone", 1868 | "tongue", 1869 | "tonight", 1870 | "tool", 1871 | "tooth", 1872 | "top", 1873 | "topic", 1874 | "topple", 1875 | "torch", 1876 | "tornado", 1877 | "tortoise", 1878 | "toss", 1879 | "total", 1880 | "tourist", 1881 | "toward", 1882 | "tower", 1883 | "town", 1884 | "toy", 1885 | "track", 1886 | "trade", 1887 | "traffic", 1888 | "tragic", 1889 | "train", 1890 | "transfer", 1891 | "trap", 1892 | "trash", 1893 | "travel", 1894 | "tray", 1895 | "treat", 1896 | "tree", 1897 | "trend", 1898 | "trial", 1899 | "tribe", 1900 | "trick", 1901 | "trigger", 1902 | "trim", 1903 | "trip", 1904 | "trophy", 1905 | "trouble", 1906 | "truck", 1907 | "true", 1908 | "truly", 1909 | "trumpet", 1910 | "trust", 1911 | "truth", 1912 | "try", 1913 | "tube", 1914 | "tuition", 1915 | "tumble", 1916 | "tuna", 1917 | "tunnel", 1918 | "turkey", 1919 | "turn", 1920 | "turtle", 1921 | "twelve", 1922 | "twenty", 1923 | "twice", 1924 | "twin", 1925 | "twist", 1926 | "two", 1927 | "type", 1928 | "typical", 1929 | "ugly", 1930 | "umbrella", 1931 | "unable", 1932 | "unaware", 1933 | "uncle", 1934 | "uncover", 1935 | "under", 1936 | "undo", 1937 | "unfair", 1938 | "unfold", 1939 | "unhappy", 1940 | "uniform", 1941 | "unique", 1942 | "unit", 1943 | "universe", 1944 | "unknown", 1945 | "unlock", 1946 | "until", 1947 | "unusual", 1948 | "unveil", 1949 | "update", 1950 | "upgrade", 1951 | "uphold", 1952 | "upon", 1953 | "upper", 1954 | "upset", 1955 | "urban", 1956 | "urge", 1957 | "usage", 1958 | "use", 1959 | "used", 1960 | "useful", 1961 | "useless", 1962 | "usual", 1963 | "utility", 1964 | "vacant", 1965 | "vacuum", 1966 | "vague", 1967 | "valid", 1968 | "valley", 1969 | "valve", 1970 | "van", 1971 | "vanish", 1972 | "vapor", 1973 | "various", 1974 | "vast", 1975 | "vault", 1976 | "vehicle", 1977 | "velvet", 1978 | "vendor", 1979 | "venture", 1980 | "venue", 1981 | "verb", 1982 | "verify", 1983 | "version", 1984 | "very", 1985 | "vessel", 1986 | "veteran", 1987 | "viable", 1988 | "vibrant", 1989 | "vicious", 1990 | "victory", 1991 | "video", 1992 | "view", 1993 | "village", 1994 | "vintage", 1995 | "violin", 1996 | "virtual", 1997 | "virus", 1998 | "visa", 1999 | "visit", 2000 | "visual", 2001 | "vital", 2002 | "vivid", 2003 | "vocal", 2004 | "voice", 2005 | "void", 2006 | "volcano", 2007 | "volume", 2008 | "vote", 2009 | "voyage", 2010 | "wage", 2011 | "wagon", 2012 | "wait", 2013 | "walk", 2014 | "wall", 2015 | "walnut", 2016 | "want", 2017 | "warfare", 2018 | "warm", 2019 | "warrior", 2020 | "wash", 2021 | "wasp", 2022 | "waste", 2023 | "water", 2024 | "wave", 2025 | "way", 2026 | "wealth", 2027 | "weapon", 2028 | "wear", 2029 | "weasel", 2030 | "weather", 2031 | "web", 2032 | "wedding", 2033 | "weekend", 2034 | "weird", 2035 | "welcome", 2036 | "west", 2037 | "wet", 2038 | "whale", 2039 | "what", 2040 | "wheat", 2041 | "wheel", 2042 | "when", 2043 | "where", 2044 | "whip", 2045 | "whisper", 2046 | "wide", 2047 | "width", 2048 | "wife", 2049 | "wild", 2050 | "will", 2051 | "win", 2052 | "window", 2053 | "wine", 2054 | "wing", 2055 | "wink", 2056 | "winner", 2057 | "winter", 2058 | "wire", 2059 | "wisdom", 2060 | "wise", 2061 | "wish", 2062 | "witness", 2063 | "wolf", 2064 | "woman", 2065 | "wonder", 2066 | "wood", 2067 | "wool", 2068 | "word", 2069 | "work", 2070 | "world", 2071 | "worry", 2072 | "worth", 2073 | "wrap", 2074 | "wreck", 2075 | "wrestle", 2076 | "wrist", 2077 | "write", 2078 | "wrong", 2079 | "yard", 2080 | "year", 2081 | "yellow", 2082 | "you", 2083 | "young", 2084 | "youth", 2085 | "zebra", 2086 | "zero", 2087 | "zone", 2088 | "zoo" 2089 | }; 2090 | } -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/wordlists/Japanese.java: -------------------------------------------------------------------------------- 1 | /* 2 | * BIP39 library, a Java implementation of BIP39 3 | * Copyright (C) 2017 Alan Evans, NovaCrypto 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | * Original source: https://github.com/NovaCrypto/BIP39 19 | * You can contact the authors via github issues. 20 | */ 21 | 22 | package com.develop.mnemonic.wordlists; 23 | 24 | 25 | /** 26 | * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/japanese.txt 27 | */ 28 | public enum Japanese implements WordList { 29 | INSTANCE; 30 | 31 | @Override 32 | public String getWord(final int index) { 33 | return words[index]; 34 | } 35 | 36 | @Override 37 | public char getSpace() { 38 | return '\u3000'; //IDEOGRAPHIC SPACE 39 | } 40 | 41 | private final static String[] words = new String[]{ 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 | "るすばん", 2049 | "るりがわら", 2050 | "れいかん", 2051 | "れいぎ", 2052 | "れいせい", 2053 | "れいぞうこ", 2054 | "れいとう", 2055 | "れいぼう", 2056 | "れきし", 2057 | "れきだい", 2058 | "れんあい", 2059 | "れんけい", 2060 | "れんこん", 2061 | "れんさい", 2062 | "れんしゅう", 2063 | "れんぞく", 2064 | "れんらく", 2065 | "ろうか", 2066 | "ろうご", 2067 | "ろうじん", 2068 | "ろうそく", 2069 | "ろくが", 2070 | "ろこつ", 2071 | "ろじうら", 2072 | "ろしゅつ", 2073 | "ろせん", 2074 | "ろてん", 2075 | "ろめん", 2076 | "ろれつ", 2077 | "ろんぎ", 2078 | "ろんぱ", 2079 | "ろんぶん", 2080 | "ろんり", 2081 | "わかす", 2082 | "わかめ", 2083 | "わかやま", 2084 | "わかれる", 2085 | "わしつ", 2086 | "わじまし", 2087 | "わすれもの", 2088 | "わらう", 2089 | "われる" 2090 | }; 2091 | } -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/wordlists/Spanish.java: -------------------------------------------------------------------------------- 1 | /* 2 | * BIP39 library, a Java implementation of BIP39 3 | * Copyright (C) 2017 Alan Evans, NovaCrypto 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | * Original source: https://github.com/NovaCrypto/BIP39 19 | * You can contact the authors via github issues. 20 | */ 21 | 22 | package com.develop.mnemonic.wordlists; 23 | 24 | 25 | /** 26 | * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/spanish.txt 27 | */ 28 | public enum Spanish implements WordList { 29 | INSTANCE; 30 | 31 | @Override 32 | public String getWord(final int index) { 33 | return words[index]; 34 | } 35 | 36 | @Override 37 | public char getSpace() { 38 | return ' '; 39 | } 40 | 41 | private final static String[] words = new String[]{ 42 | "ábaco", 43 | "abdomen", 44 | "abeja", 45 | "abierto", 46 | "abogado", 47 | "abono", 48 | "aborto", 49 | "abrazo", 50 | "abrir", 51 | "abuelo", 52 | "abuso", 53 | "acabar", 54 | "academia", 55 | "acceso", 56 | "acción", 57 | "aceite", 58 | "acelga", 59 | "acento", 60 | "aceptar", 61 | "ácido", 62 | "aclarar", 63 | "acné", 64 | "acoger", 65 | "acoso", 66 | "activo", 67 | "acto", 68 | "actriz", 69 | "actuar", 70 | "acudir", 71 | "acuerdo", 72 | "acusar", 73 | "adicto", 74 | "admitir", 75 | "adoptar", 76 | "adorno", 77 | "aduana", 78 | "adulto", 79 | "aéreo", 80 | "afectar", 81 | "afición", 82 | "afinar", 83 | "afirmar", 84 | "ágil", 85 | "agitar", 86 | "agonía", 87 | "agosto", 88 | "agotar", 89 | "agregar", 90 | "agrio", 91 | "agua", 92 | "agudo", 93 | "águila", 94 | "aguja", 95 | "ahogo", 96 | "ahorro", 97 | "aire", 98 | "aislar", 99 | "ajedrez", 100 | "ajeno", 101 | "ajuste", 102 | "alacrán", 103 | "alambre", 104 | "alarma", 105 | "alba", 106 | "álbum", 107 | "alcalde", 108 | "aldea", 109 | "alegre", 110 | "alejar", 111 | "alerta", 112 | "aleta", 113 | "alfiler", 114 | "alga", 115 | "algodón", 116 | "aliado", 117 | "aliento", 118 | "alivio", 119 | "alma", 120 | "almeja", 121 | "almíbar", 122 | "altar", 123 | "alteza", 124 | "altivo", 125 | "alto", 126 | "altura", 127 | "alumno", 128 | "alzar", 129 | "amable", 130 | "amante", 131 | "amapola", 132 | "amargo", 133 | "amasar", 134 | "ámbar", 135 | "ámbito", 136 | "ameno", 137 | "amigo", 138 | "amistad", 139 | "amor", 140 | "amparo", 141 | "amplio", 142 | "ancho", 143 | "anciano", 144 | "ancla", 145 | "andar", 146 | "andén", 147 | "anemia", 148 | "ángulo", 149 | "anillo", 150 | "ánimo", 151 | "anís", 152 | "anotar", 153 | "antena", 154 | "antiguo", 155 | "antojo", 156 | "anual", 157 | "anular", 158 | "anuncio", 159 | "añadir", 160 | "añejo", 161 | "año", 162 | "apagar", 163 | "aparato", 164 | "apetito", 165 | "apio", 166 | "aplicar", 167 | "apodo", 168 | "aporte", 169 | "apoyo", 170 | "aprender", 171 | "aprobar", 172 | "apuesta", 173 | "apuro", 174 | "arado", 175 | "araña", 176 | "arar", 177 | "árbitro", 178 | "árbol", 179 | "arbusto", 180 | "archivo", 181 | "arco", 182 | "arder", 183 | "ardilla", 184 | "arduo", 185 | "área", 186 | "árido", 187 | "aries", 188 | "armonía", 189 | "arnés", 190 | "aroma", 191 | "arpa", 192 | "arpón", 193 | "arreglo", 194 | "arroz", 195 | "arruga", 196 | "arte", 197 | "artista", 198 | "asa", 199 | "asado", 200 | "asalto", 201 | "ascenso", 202 | "asegurar", 203 | "aseo", 204 | "asesor", 205 | "asiento", 206 | "asilo", 207 | "asistir", 208 | "asno", 209 | "asombro", 210 | "áspero", 211 | "astilla", 212 | "astro", 213 | "astuto", 214 | "asumir", 215 | "asunto", 216 | "atajo", 217 | "ataque", 218 | "atar", 219 | "atento", 220 | "ateo", 221 | "ático", 222 | "atleta", 223 | "átomo", 224 | "atraer", 225 | "atroz", 226 | "atún", 227 | "audaz", 228 | "audio", 229 | "auge", 230 | "aula", 231 | "aumento", 232 | "ausente", 233 | "autor", 234 | "aval", 235 | "avance", 236 | "avaro", 237 | "ave", 238 | "avellana", 239 | "avena", 240 | "avestruz", 241 | "avión", 242 | "aviso", 243 | "ayer", 244 | "ayuda", 245 | "ayuno", 246 | "azafrán", 247 | "azar", 248 | "azote", 249 | "azúcar", 250 | "azufre", 251 | "azul", 252 | "baba", 253 | "babor", 254 | "bache", 255 | "bahía", 256 | "baile", 257 | "bajar", 258 | "balanza", 259 | "balcón", 260 | "balde", 261 | "bambú", 262 | "banco", 263 | "banda", 264 | "baño", 265 | "barba", 266 | "barco", 267 | "barniz", 268 | "barro", 269 | "báscula", 270 | "bastón", 271 | "basura", 272 | "batalla", 273 | "batería", 274 | "batir", 275 | "batuta", 276 | "baúl", 277 | "bazar", 278 | "bebé", 279 | "bebida", 280 | "bello", 281 | "besar", 282 | "beso", 283 | "bestia", 284 | "bicho", 285 | "bien", 286 | "bingo", 287 | "blanco", 288 | "bloque", 289 | "blusa", 290 | "boa", 291 | "bobina", 292 | "bobo", 293 | "boca", 294 | "bocina", 295 | "boda", 296 | "bodega", 297 | "boina", 298 | "bola", 299 | "bolero", 300 | "bolsa", 301 | "bomba", 302 | "bondad", 303 | "bonito", 304 | "bono", 305 | "bonsái", 306 | "borde", 307 | "borrar", 308 | "bosque", 309 | "bote", 310 | "botín", 311 | "bóveda", 312 | "bozal", 313 | "bravo", 314 | "brazo", 315 | "brecha", 316 | "breve", 317 | "brillo", 318 | "brinco", 319 | "brisa", 320 | "broca", 321 | "broma", 322 | "bronce", 323 | "brote", 324 | "bruja", 325 | "brusco", 326 | "bruto", 327 | "buceo", 328 | "bucle", 329 | "bueno", 330 | "buey", 331 | "bufanda", 332 | "bufón", 333 | "búho", 334 | "buitre", 335 | "bulto", 336 | "burbuja", 337 | "burla", 338 | "burro", 339 | "buscar", 340 | "butaca", 341 | "buzón", 342 | "caballo", 343 | "cabeza", 344 | "cabina", 345 | "cabra", 346 | "cacao", 347 | "cadáver", 348 | "cadena", 349 | "caer", 350 | "café", 351 | "caída", 352 | "caimán", 353 | "caja", 354 | "cajón", 355 | "cal", 356 | "calamar", 357 | "calcio", 358 | "caldo", 359 | "calidad", 360 | "calle", 361 | "calma", 362 | "calor", 363 | "calvo", 364 | "cama", 365 | "cambio", 366 | "camello", 367 | "camino", 368 | "campo", 369 | "cáncer", 370 | "candil", 371 | "canela", 372 | "canguro", 373 | "canica", 374 | "canto", 375 | "caña", 376 | "cañón", 377 | "caoba", 378 | "caos", 379 | "capaz", 380 | "capitán", 381 | "capote", 382 | "captar", 383 | "capucha", 384 | "cara", 385 | "carbón", 386 | "cárcel", 387 | "careta", 388 | "carga", 389 | "cariño", 390 | "carne", 391 | "carpeta", 392 | "carro", 393 | "carta", 394 | "casa", 395 | "casco", 396 | "casero", 397 | "caspa", 398 | "castor", 399 | "catorce", 400 | "catre", 401 | "caudal", 402 | "causa", 403 | "cazo", 404 | "cebolla", 405 | "ceder", 406 | "cedro", 407 | "celda", 408 | "célebre", 409 | "celoso", 410 | "célula", 411 | "cemento", 412 | "ceniza", 413 | "centro", 414 | "cerca", 415 | "cerdo", 416 | "cereza", 417 | "cero", 418 | "cerrar", 419 | "certeza", 420 | "césped", 421 | "cetro", 422 | "chacal", 423 | "chaleco", 424 | "champú", 425 | "chancla", 426 | "chapa", 427 | "charla", 428 | "chico", 429 | "chiste", 430 | "chivo", 431 | "choque", 432 | "choza", 433 | "chuleta", 434 | "chupar", 435 | "ciclón", 436 | "ciego", 437 | "cielo", 438 | "cien", 439 | "cierto", 440 | "cifra", 441 | "cigarro", 442 | "cima", 443 | "cinco", 444 | "cine", 445 | "cinta", 446 | "ciprés", 447 | "circo", 448 | "ciruela", 449 | "cisne", 450 | "cita", 451 | "ciudad", 452 | "clamor", 453 | "clan", 454 | "claro", 455 | "clase", 456 | "clave", 457 | "cliente", 458 | "clima", 459 | "clínica", 460 | "cobre", 461 | "cocción", 462 | "cochino", 463 | "cocina", 464 | "coco", 465 | "código", 466 | "codo", 467 | "cofre", 468 | "coger", 469 | "cohete", 470 | "cojín", 471 | "cojo", 472 | "cola", 473 | "colcha", 474 | "colegio", 475 | "colgar", 476 | "colina", 477 | "collar", 478 | "colmo", 479 | "columna", 480 | "combate", 481 | "comer", 482 | "comida", 483 | "cómodo", 484 | "compra", 485 | "conde", 486 | "conejo", 487 | "conga", 488 | "conocer", 489 | "consejo", 490 | "contar", 491 | "copa", 492 | "copia", 493 | "corazón", 494 | "corbata", 495 | "corcho", 496 | "cordón", 497 | "corona", 498 | "correr", 499 | "coser", 500 | "cosmos", 501 | "costa", 502 | "cráneo", 503 | "cráter", 504 | "crear", 505 | "crecer", 506 | "creído", 507 | "crema", 508 | "cría", 509 | "crimen", 510 | "cripta", 511 | "crisis", 512 | "cromo", 513 | "crónica", 514 | "croqueta", 515 | "crudo", 516 | "cruz", 517 | "cuadro", 518 | "cuarto", 519 | "cuatro", 520 | "cubo", 521 | "cubrir", 522 | "cuchara", 523 | "cuello", 524 | "cuento", 525 | "cuerda", 526 | "cuesta", 527 | "cueva", 528 | "cuidar", 529 | "culebra", 530 | "culpa", 531 | "culto", 532 | "cumbre", 533 | "cumplir", 534 | "cuna", 535 | "cuneta", 536 | "cuota", 537 | "cupón", 538 | "cúpula", 539 | "curar", 540 | "curioso", 541 | "curso", 542 | "curva", 543 | "cutis", 544 | "dama", 545 | "danza", 546 | "dar", 547 | "dardo", 548 | "dátil", 549 | "deber", 550 | "débil", 551 | "década", 552 | "decir", 553 | "dedo", 554 | "defensa", 555 | "definir", 556 | "dejar", 557 | "delfín", 558 | "delgado", 559 | "delito", 560 | "demora", 561 | "denso", 562 | "dental", 563 | "deporte", 564 | "derecho", 565 | "derrota", 566 | "desayuno", 567 | "deseo", 568 | "desfile", 569 | "desnudo", 570 | "destino", 571 | "desvío", 572 | "detalle", 573 | "detener", 574 | "deuda", 575 | "día", 576 | "diablo", 577 | "diadema", 578 | "diamante", 579 | "diana", 580 | "diario", 581 | "dibujo", 582 | "dictar", 583 | "diente", 584 | "dieta", 585 | "diez", 586 | "difícil", 587 | "digno", 588 | "dilema", 589 | "diluir", 590 | "dinero", 591 | "directo", 592 | "dirigir", 593 | "disco", 594 | "diseño", 595 | "disfraz", 596 | "diva", 597 | "divino", 598 | "doble", 599 | "doce", 600 | "dolor", 601 | "domingo", 602 | "don", 603 | "donar", 604 | "dorado", 605 | "dormir", 606 | "dorso", 607 | "dos", 608 | "dosis", 609 | "dragón", 610 | "droga", 611 | "ducha", 612 | "duda", 613 | "duelo", 614 | "dueño", 615 | "dulce", 616 | "dúo", 617 | "duque", 618 | "durar", 619 | "dureza", 620 | "duro", 621 | "ébano", 622 | "ebrio", 623 | "echar", 624 | "eco", 625 | "ecuador", 626 | "edad", 627 | "edición", 628 | "edificio", 629 | "editor", 630 | "educar", 631 | "efecto", 632 | "eficaz", 633 | "eje", 634 | "ejemplo", 635 | "elefante", 636 | "elegir", 637 | "elemento", 638 | "elevar", 639 | "elipse", 640 | "élite", 641 | "elixir", 642 | "elogio", 643 | "eludir", 644 | "embudo", 645 | "emitir", 646 | "emoción", 647 | "empate", 648 | "empeño", 649 | "empleo", 650 | "empresa", 651 | "enano", 652 | "encargo", 653 | "enchufe", 654 | "encía", 655 | "enemigo", 656 | "enero", 657 | "enfado", 658 | "enfermo", 659 | "engaño", 660 | "enigma", 661 | "enlace", 662 | "enorme", 663 | "enredo", 664 | "ensayo", 665 | "enseñar", 666 | "entero", 667 | "entrar", 668 | "envase", 669 | "envío", 670 | "época", 671 | "equipo", 672 | "erizo", 673 | "escala", 674 | "escena", 675 | "escolar", 676 | "escribir", 677 | "escudo", 678 | "esencia", 679 | "esfera", 680 | "esfuerzo", 681 | "espada", 682 | "espejo", 683 | "espía", 684 | "esposa", 685 | "espuma", 686 | "esquí", 687 | "estar", 688 | "este", 689 | "estilo", 690 | "estufa", 691 | "etapa", 692 | "eterno", 693 | "ética", 694 | "etnia", 695 | "evadir", 696 | "evaluar", 697 | "evento", 698 | "evitar", 699 | "exacto", 700 | "examen", 701 | "exceso", 702 | "excusa", 703 | "exento", 704 | "exigir", 705 | "exilio", 706 | "existir", 707 | "éxito", 708 | "experto", 709 | "explicar", 710 | "exponer", 711 | "extremo", 712 | "fábrica", 713 | "fábula", 714 | "fachada", 715 | "fácil", 716 | "factor", 717 | "faena", 718 | "faja", 719 | "falda", 720 | "fallo", 721 | "falso", 722 | "faltar", 723 | "fama", 724 | "familia", 725 | "famoso", 726 | "faraón", 727 | "farmacia", 728 | "farol", 729 | "farsa", 730 | "fase", 731 | "fatiga", 732 | "fauna", 733 | "favor", 734 | "fax", 735 | "febrero", 736 | "fecha", 737 | "feliz", 738 | "feo", 739 | "feria", 740 | "feroz", 741 | "fértil", 742 | "fervor", 743 | "festín", 744 | "fiable", 745 | "fianza", 746 | "fiar", 747 | "fibra", 748 | "ficción", 749 | "ficha", 750 | "fideo", 751 | "fiebre", 752 | "fiel", 753 | "fiera", 754 | "fiesta", 755 | "figura", 756 | "fijar", 757 | "fijo", 758 | "fila", 759 | "filete", 760 | "filial", 761 | "filtro", 762 | "fin", 763 | "finca", 764 | "fingir", 765 | "finito", 766 | "firma", 767 | "flaco", 768 | "flauta", 769 | "flecha", 770 | "flor", 771 | "flota", 772 | "fluir", 773 | "flujo", 774 | "flúor", 775 | "fobia", 776 | "foca", 777 | "fogata", 778 | "fogón", 779 | "folio", 780 | "folleto", 781 | "fondo", 782 | "forma", 783 | "forro", 784 | "fortuna", 785 | "forzar", 786 | "fosa", 787 | "foto", 788 | "fracaso", 789 | "frágil", 790 | "franja", 791 | "frase", 792 | "fraude", 793 | "freír", 794 | "freno", 795 | "fresa", 796 | "frío", 797 | "frito", 798 | "fruta", 799 | "fuego", 800 | "fuente", 801 | "fuerza", 802 | "fuga", 803 | "fumar", 804 | "función", 805 | "funda", 806 | "furgón", 807 | "furia", 808 | "fusil", 809 | "fútbol", 810 | "futuro", 811 | "gacela", 812 | "gafas", 813 | "gaita", 814 | "gajo", 815 | "gala", 816 | "galería", 817 | "gallo", 818 | "gamba", 819 | "ganar", 820 | "gancho", 821 | "ganga", 822 | "ganso", 823 | "garaje", 824 | "garza", 825 | "gasolina", 826 | "gastar", 827 | "gato", 828 | "gavilán", 829 | "gemelo", 830 | "gemir", 831 | "gen", 832 | "género", 833 | "genio", 834 | "gente", 835 | "geranio", 836 | "gerente", 837 | "germen", 838 | "gesto", 839 | "gigante", 840 | "gimnasio", 841 | "girar", 842 | "giro", 843 | "glaciar", 844 | "globo", 845 | "gloria", 846 | "gol", 847 | "golfo", 848 | "goloso", 849 | "golpe", 850 | "goma", 851 | "gordo", 852 | "gorila", 853 | "gorra", 854 | "gota", 855 | "goteo", 856 | "gozar", 857 | "grada", 858 | "gráfico", 859 | "grano", 860 | "grasa", 861 | "gratis", 862 | "grave", 863 | "grieta", 864 | "grillo", 865 | "gripe", 866 | "gris", 867 | "grito", 868 | "grosor", 869 | "grúa", 870 | "grueso", 871 | "grumo", 872 | "grupo", 873 | "guante", 874 | "guapo", 875 | "guardia", 876 | "guerra", 877 | "guía", 878 | "guiño", 879 | "guion", 880 | "guiso", 881 | "guitarra", 882 | "gusano", 883 | "gustar", 884 | "haber", 885 | "hábil", 886 | "hablar", 887 | "hacer", 888 | "hacha", 889 | "hada", 890 | "hallar", 891 | "hamaca", 892 | "harina", 893 | "haz", 894 | "hazaña", 895 | "hebilla", 896 | "hebra", 897 | "hecho", 898 | "helado", 899 | "helio", 900 | "hembra", 901 | "herir", 902 | "hermano", 903 | "héroe", 904 | "hervir", 905 | "hielo", 906 | "hierro", 907 | "hígado", 908 | "higiene", 909 | "hijo", 910 | "himno", 911 | "historia", 912 | "hocico", 913 | "hogar", 914 | "hoguera", 915 | "hoja", 916 | "hombre", 917 | "hongo", 918 | "honor", 919 | "honra", 920 | "hora", 921 | "hormiga", 922 | "horno", 923 | "hostil", 924 | "hoyo", 925 | "hueco", 926 | "huelga", 927 | "huerta", 928 | "hueso", 929 | "huevo", 930 | "huida", 931 | "huir", 932 | "humano", 933 | "húmedo", 934 | "humilde", 935 | "humo", 936 | "hundir", 937 | "huracán", 938 | "hurto", 939 | "icono", 940 | "ideal", 941 | "idioma", 942 | "ídolo", 943 | "iglesia", 944 | "iglú", 945 | "igual", 946 | "ilegal", 947 | "ilusión", 948 | "imagen", 949 | "imán", 950 | "imitar", 951 | "impar", 952 | "imperio", 953 | "imponer", 954 | "impulso", 955 | "incapaz", 956 | "índice", 957 | "inerte", 958 | "infiel", 959 | "informe", 960 | "ingenio", 961 | "inicio", 962 | "inmenso", 963 | "inmune", 964 | "innato", 965 | "insecto", 966 | "instante", 967 | "interés", 968 | "íntimo", 969 | "intuir", 970 | "inútil", 971 | "invierno", 972 | "ira", 973 | "iris", 974 | "ironía", 975 | "isla", 976 | "islote", 977 | "jabalí", 978 | "jabón", 979 | "jamón", 980 | "jarabe", 981 | "jardín", 982 | "jarra", 983 | "jaula", 984 | "jazmín", 985 | "jefe", 986 | "jeringa", 987 | "jinete", 988 | "jornada", 989 | "joroba", 990 | "joven", 991 | "joya", 992 | "juerga", 993 | "jueves", 994 | "juez", 995 | "jugador", 996 | "jugo", 997 | "juguete", 998 | "juicio", 999 | "junco", 1000 | "jungla", 1001 | "junio", 1002 | "juntar", 1003 | "júpiter", 1004 | "jurar", 1005 | "justo", 1006 | "juvenil", 1007 | "juzgar", 1008 | "kilo", 1009 | "koala", 1010 | "labio", 1011 | "lacio", 1012 | "lacra", 1013 | "lado", 1014 | "ladrón", 1015 | "lagarto", 1016 | "lágrima", 1017 | "laguna", 1018 | "laico", 1019 | "lamer", 1020 | "lámina", 1021 | "lámpara", 1022 | "lana", 1023 | "lancha", 1024 | "langosta", 1025 | "lanza", 1026 | "lápiz", 1027 | "largo", 1028 | "larva", 1029 | "lástima", 1030 | "lata", 1031 | "látex", 1032 | "latir", 1033 | "laurel", 1034 | "lavar", 1035 | "lazo", 1036 | "leal", 1037 | "lección", 1038 | "leche", 1039 | "lector", 1040 | "leer", 1041 | "legión", 1042 | "legumbre", 1043 | "lejano", 1044 | "lengua", 1045 | "lento", 1046 | "leña", 1047 | "león", 1048 | "leopardo", 1049 | "lesión", 1050 | "letal", 1051 | "letra", 1052 | "leve", 1053 | "leyenda", 1054 | "libertad", 1055 | "libro", 1056 | "licor", 1057 | "líder", 1058 | "lidiar", 1059 | "lienzo", 1060 | "liga", 1061 | "ligero", 1062 | "lima", 1063 | "límite", 1064 | "limón", 1065 | "limpio", 1066 | "lince", 1067 | "lindo", 1068 | "línea", 1069 | "lingote", 1070 | "lino", 1071 | "linterna", 1072 | "líquido", 1073 | "liso", 1074 | "lista", 1075 | "litera", 1076 | "litio", 1077 | "litro", 1078 | "llaga", 1079 | "llama", 1080 | "llanto", 1081 | "llave", 1082 | "llegar", 1083 | "llenar", 1084 | "llevar", 1085 | "llorar", 1086 | "llover", 1087 | "lluvia", 1088 | "lobo", 1089 | "loción", 1090 | "loco", 1091 | "locura", 1092 | "lógica", 1093 | "logro", 1094 | "lombriz", 1095 | "lomo", 1096 | "lonja", 1097 | "lote", 1098 | "lucha", 1099 | "lucir", 1100 | "lugar", 1101 | "lujo", 1102 | "luna", 1103 | "lunes", 1104 | "lupa", 1105 | "lustro", 1106 | "luto", 1107 | "luz", 1108 | "maceta", 1109 | "macho", 1110 | "madera", 1111 | "madre", 1112 | "maduro", 1113 | "maestro", 1114 | "mafia", 1115 | "magia", 1116 | "mago", 1117 | "maíz", 1118 | "maldad", 1119 | "maleta", 1120 | "malla", 1121 | "malo", 1122 | "mamá", 1123 | "mambo", 1124 | "mamut", 1125 | "manco", 1126 | "mando", 1127 | "manejar", 1128 | "manga", 1129 | "maniquí", 1130 | "manjar", 1131 | "mano", 1132 | "manso", 1133 | "manta", 1134 | "mañana", 1135 | "mapa", 1136 | "máquina", 1137 | "mar", 1138 | "marco", 1139 | "marea", 1140 | "marfil", 1141 | "margen", 1142 | "marido", 1143 | "mármol", 1144 | "marrón", 1145 | "martes", 1146 | "marzo", 1147 | "masa", 1148 | "máscara", 1149 | "masivo", 1150 | "matar", 1151 | "materia", 1152 | "matiz", 1153 | "matriz", 1154 | "máximo", 1155 | "mayor", 1156 | "mazorca", 1157 | "mecha", 1158 | "medalla", 1159 | "medio", 1160 | "médula", 1161 | "mejilla", 1162 | "mejor", 1163 | "melena", 1164 | "melón", 1165 | "memoria", 1166 | "menor", 1167 | "mensaje", 1168 | "mente", 1169 | "menú", 1170 | "mercado", 1171 | "merengue", 1172 | "mérito", 1173 | "mes", 1174 | "mesón", 1175 | "meta", 1176 | "meter", 1177 | "método", 1178 | "metro", 1179 | "mezcla", 1180 | "miedo", 1181 | "miel", 1182 | "miembro", 1183 | "miga", 1184 | "mil", 1185 | "milagro", 1186 | "militar", 1187 | "millón", 1188 | "mimo", 1189 | "mina", 1190 | "minero", 1191 | "mínimo", 1192 | "minuto", 1193 | "miope", 1194 | "mirar", 1195 | "misa", 1196 | "miseria", 1197 | "misil", 1198 | "mismo", 1199 | "mitad", 1200 | "mito", 1201 | "mochila", 1202 | "moción", 1203 | "moda", 1204 | "modelo", 1205 | "moho", 1206 | "mojar", 1207 | "molde", 1208 | "moler", 1209 | "molino", 1210 | "momento", 1211 | "momia", 1212 | "monarca", 1213 | "moneda", 1214 | "monja", 1215 | "monto", 1216 | "moño", 1217 | "morada", 1218 | "morder", 1219 | "moreno", 1220 | "morir", 1221 | "morro", 1222 | "morsa", 1223 | "mortal", 1224 | "mosca", 1225 | "mostrar", 1226 | "motivo", 1227 | "mover", 1228 | "móvil", 1229 | "mozo", 1230 | "mucho", 1231 | "mudar", 1232 | "mueble", 1233 | "muela", 1234 | "muerte", 1235 | "muestra", 1236 | "mugre", 1237 | "mujer", 1238 | "mula", 1239 | "muleta", 1240 | "multa", 1241 | "mundo", 1242 | "muñeca", 1243 | "mural", 1244 | "muro", 1245 | "músculo", 1246 | "museo", 1247 | "musgo", 1248 | "música", 1249 | "muslo", 1250 | "nácar", 1251 | "nación", 1252 | "nadar", 1253 | "naipe", 1254 | "naranja", 1255 | "nariz", 1256 | "narrar", 1257 | "nasal", 1258 | "natal", 1259 | "nativo", 1260 | "natural", 1261 | "náusea", 1262 | "naval", 1263 | "nave", 1264 | "navidad", 1265 | "necio", 1266 | "néctar", 1267 | "negar", 1268 | "negocio", 1269 | "negro", 1270 | "neón", 1271 | "nervio", 1272 | "neto", 1273 | "neutro", 1274 | "nevar", 1275 | "nevera", 1276 | "nicho", 1277 | "nido", 1278 | "niebla", 1279 | "nieto", 1280 | "niñez", 1281 | "niño", 1282 | "nítido", 1283 | "nivel", 1284 | "nobleza", 1285 | "noche", 1286 | "nómina", 1287 | "noria", 1288 | "norma", 1289 | "norte", 1290 | "nota", 1291 | "noticia", 1292 | "novato", 1293 | "novela", 1294 | "novio", 1295 | "nube", 1296 | "nuca", 1297 | "núcleo", 1298 | "nudillo", 1299 | "nudo", 1300 | "nuera", 1301 | "nueve", 1302 | "nuez", 1303 | "nulo", 1304 | "número", 1305 | "nutria", 1306 | "oasis", 1307 | "obeso", 1308 | "obispo", 1309 | "objeto", 1310 | "obra", 1311 | "obrero", 1312 | "observar", 1313 | "obtener", 1314 | "obvio", 1315 | "oca", 1316 | "ocaso", 1317 | "océano", 1318 | "ochenta", 1319 | "ocho", 1320 | "ocio", 1321 | "ocre", 1322 | "octavo", 1323 | "octubre", 1324 | "oculto", 1325 | "ocupar", 1326 | "ocurrir", 1327 | "odiar", 1328 | "odio", 1329 | "odisea", 1330 | "oeste", 1331 | "ofensa", 1332 | "oferta", 1333 | "oficio", 1334 | "ofrecer", 1335 | "ogro", 1336 | "oído", 1337 | "oír", 1338 | "ojo", 1339 | "ola", 1340 | "oleada", 1341 | "olfato", 1342 | "olivo", 1343 | "olla", 1344 | "olmo", 1345 | "olor", 1346 | "olvido", 1347 | "ombligo", 1348 | "onda", 1349 | "onza", 1350 | "opaco", 1351 | "opción", 1352 | "ópera", 1353 | "opinar", 1354 | "oponer", 1355 | "optar", 1356 | "óptica", 1357 | "opuesto", 1358 | "oración", 1359 | "orador", 1360 | "oral", 1361 | "órbita", 1362 | "orca", 1363 | "orden", 1364 | "oreja", 1365 | "órgano", 1366 | "orgía", 1367 | "orgullo", 1368 | "oriente", 1369 | "origen", 1370 | "orilla", 1371 | "oro", 1372 | "orquesta", 1373 | "oruga", 1374 | "osadía", 1375 | "oscuro", 1376 | "osezno", 1377 | "oso", 1378 | "ostra", 1379 | "otoño", 1380 | "otro", 1381 | "oveja", 1382 | "óvulo", 1383 | "óxido", 1384 | "oxígeno", 1385 | "oyente", 1386 | "ozono", 1387 | "pacto", 1388 | "padre", 1389 | "paella", 1390 | "página", 1391 | "pago", 1392 | "país", 1393 | "pájaro", 1394 | "palabra", 1395 | "palco", 1396 | "paleta", 1397 | "pálido", 1398 | "palma", 1399 | "paloma", 1400 | "palpar", 1401 | "pan", 1402 | "panal", 1403 | "pánico", 1404 | "pantera", 1405 | "pañuelo", 1406 | "papá", 1407 | "papel", 1408 | "papilla", 1409 | "paquete", 1410 | "parar", 1411 | "parcela", 1412 | "pared", 1413 | "parir", 1414 | "paro", 1415 | "párpado", 1416 | "parque", 1417 | "párrafo", 1418 | "parte", 1419 | "pasar", 1420 | "paseo", 1421 | "pasión", 1422 | "paso", 1423 | "pasta", 1424 | "pata", 1425 | "patio", 1426 | "patria", 1427 | "pausa", 1428 | "pauta", 1429 | "pavo", 1430 | "payaso", 1431 | "peatón", 1432 | "pecado", 1433 | "pecera", 1434 | "pecho", 1435 | "pedal", 1436 | "pedir", 1437 | "pegar", 1438 | "peine", 1439 | "pelar", 1440 | "peldaño", 1441 | "pelea", 1442 | "peligro", 1443 | "pellejo", 1444 | "pelo", 1445 | "peluca", 1446 | "pena", 1447 | "pensar", 1448 | "peñón", 1449 | "peón", 1450 | "peor", 1451 | "pepino", 1452 | "pequeño", 1453 | "pera", 1454 | "percha", 1455 | "perder", 1456 | "pereza", 1457 | "perfil", 1458 | "perico", 1459 | "perla", 1460 | "permiso", 1461 | "perro", 1462 | "persona", 1463 | "pesa", 1464 | "pesca", 1465 | "pésimo", 1466 | "pestaña", 1467 | "pétalo", 1468 | "petróleo", 1469 | "pez", 1470 | "pezuña", 1471 | "picar", 1472 | "pichón", 1473 | "pie", 1474 | "piedra", 1475 | "pierna", 1476 | "pieza", 1477 | "pijama", 1478 | "pilar", 1479 | "piloto", 1480 | "pimienta", 1481 | "pino", 1482 | "pintor", 1483 | "pinza", 1484 | "piña", 1485 | "piojo", 1486 | "pipa", 1487 | "pirata", 1488 | "pisar", 1489 | "piscina", 1490 | "piso", 1491 | "pista", 1492 | "pitón", 1493 | "pizca", 1494 | "placa", 1495 | "plan", 1496 | "plata", 1497 | "playa", 1498 | "plaza", 1499 | "pleito", 1500 | "pleno", 1501 | "plomo", 1502 | "pluma", 1503 | "plural", 1504 | "pobre", 1505 | "poco", 1506 | "poder", 1507 | "podio", 1508 | "poema", 1509 | "poesía", 1510 | "poeta", 1511 | "polen", 1512 | "policía", 1513 | "pollo", 1514 | "polvo", 1515 | "pomada", 1516 | "pomelo", 1517 | "pomo", 1518 | "pompa", 1519 | "poner", 1520 | "porción", 1521 | "portal", 1522 | "posada", 1523 | "poseer", 1524 | "posible", 1525 | "poste", 1526 | "potencia", 1527 | "potro", 1528 | "pozo", 1529 | "prado", 1530 | "precoz", 1531 | "pregunta", 1532 | "premio", 1533 | "prensa", 1534 | "preso", 1535 | "previo", 1536 | "primo", 1537 | "príncipe", 1538 | "prisión", 1539 | "privar", 1540 | "proa", 1541 | "probar", 1542 | "proceso", 1543 | "producto", 1544 | "proeza", 1545 | "profesor", 1546 | "programa", 1547 | "prole", 1548 | "promesa", 1549 | "pronto", 1550 | "propio", 1551 | "próximo", 1552 | "prueba", 1553 | "público", 1554 | "puchero", 1555 | "pudor", 1556 | "pueblo", 1557 | "puerta", 1558 | "puesto", 1559 | "pulga", 1560 | "pulir", 1561 | "pulmón", 1562 | "pulpo", 1563 | "pulso", 1564 | "puma", 1565 | "punto", 1566 | "puñal", 1567 | "puño", 1568 | "pupa", 1569 | "pupila", 1570 | "puré", 1571 | "quedar", 1572 | "queja", 1573 | "quemar", 1574 | "querer", 1575 | "queso", 1576 | "quieto", 1577 | "química", 1578 | "quince", 1579 | "quitar", 1580 | "rábano", 1581 | "rabia", 1582 | "rabo", 1583 | "ración", 1584 | "radical", 1585 | "raíz", 1586 | "rama", 1587 | "rampa", 1588 | "rancho", 1589 | "rango", 1590 | "rapaz", 1591 | "rápido", 1592 | "rapto", 1593 | "rasgo", 1594 | "raspa", 1595 | "rato", 1596 | "rayo", 1597 | "raza", 1598 | "razón", 1599 | "reacción", 1600 | "realidad", 1601 | "rebaño", 1602 | "rebote", 1603 | "recaer", 1604 | "receta", 1605 | "rechazo", 1606 | "recoger", 1607 | "recreo", 1608 | "recto", 1609 | "recurso", 1610 | "red", 1611 | "redondo", 1612 | "reducir", 1613 | "reflejo", 1614 | "reforma", 1615 | "refrán", 1616 | "refugio", 1617 | "regalo", 1618 | "regir", 1619 | "regla", 1620 | "regreso", 1621 | "rehén", 1622 | "reino", 1623 | "reír", 1624 | "reja", 1625 | "relato", 1626 | "relevo", 1627 | "relieve", 1628 | "relleno", 1629 | "reloj", 1630 | "remar", 1631 | "remedio", 1632 | "remo", 1633 | "rencor", 1634 | "rendir", 1635 | "renta", 1636 | "reparto", 1637 | "repetir", 1638 | "reposo", 1639 | "reptil", 1640 | "res", 1641 | "rescate", 1642 | "resina", 1643 | "respeto", 1644 | "resto", 1645 | "resumen", 1646 | "retiro", 1647 | "retorno", 1648 | "retrato", 1649 | "reunir", 1650 | "revés", 1651 | "revista", 1652 | "rey", 1653 | "rezar", 1654 | "rico", 1655 | "riego", 1656 | "rienda", 1657 | "riesgo", 1658 | "rifa", 1659 | "rígido", 1660 | "rigor", 1661 | "rincón", 1662 | "riñón", 1663 | "río", 1664 | "riqueza", 1665 | "risa", 1666 | "ritmo", 1667 | "rito", 1668 | "rizo", 1669 | "roble", 1670 | "roce", 1671 | "rociar", 1672 | "rodar", 1673 | "rodeo", 1674 | "rodilla", 1675 | "roer", 1676 | "rojizo", 1677 | "rojo", 1678 | "romero", 1679 | "romper", 1680 | "ron", 1681 | "ronco", 1682 | "ronda", 1683 | "ropa", 1684 | "ropero", 1685 | "rosa", 1686 | "rosca", 1687 | "rostro", 1688 | "rotar", 1689 | "rubí", 1690 | "rubor", 1691 | "rudo", 1692 | "rueda", 1693 | "rugir", 1694 | "ruido", 1695 | "ruina", 1696 | "ruleta", 1697 | "rulo", 1698 | "rumbo", 1699 | "rumor", 1700 | "ruptura", 1701 | "ruta", 1702 | "rutina", 1703 | "sábado", 1704 | "saber", 1705 | "sabio", 1706 | "sable", 1707 | "sacar", 1708 | "sagaz", 1709 | "sagrado", 1710 | "sala", 1711 | "saldo", 1712 | "salero", 1713 | "salir", 1714 | "salmón", 1715 | "salón", 1716 | "salsa", 1717 | "salto", 1718 | "salud", 1719 | "salvar", 1720 | "samba", 1721 | "sanción", 1722 | "sandía", 1723 | "sanear", 1724 | "sangre", 1725 | "sanidad", 1726 | "sano", 1727 | "santo", 1728 | "sapo", 1729 | "saque", 1730 | "sardina", 1731 | "sartén", 1732 | "sastre", 1733 | "satán", 1734 | "sauna", 1735 | "saxofón", 1736 | "sección", 1737 | "seco", 1738 | "secreto", 1739 | "secta", 1740 | "sed", 1741 | "seguir", 1742 | "seis", 1743 | "sello", 1744 | "selva", 1745 | "semana", 1746 | "semilla", 1747 | "senda", 1748 | "sensor", 1749 | "señal", 1750 | "señor", 1751 | "separar", 1752 | "sepia", 1753 | "sequía", 1754 | "ser", 1755 | "serie", 1756 | "sermón", 1757 | "servir", 1758 | "sesenta", 1759 | "sesión", 1760 | "seta", 1761 | "setenta", 1762 | "severo", 1763 | "sexo", 1764 | "sexto", 1765 | "sidra", 1766 | "siesta", 1767 | "siete", 1768 | "siglo", 1769 | "signo", 1770 | "sílaba", 1771 | "silbar", 1772 | "silencio", 1773 | "silla", 1774 | "símbolo", 1775 | "simio", 1776 | "sirena", 1777 | "sistema", 1778 | "sitio", 1779 | "situar", 1780 | "sobre", 1781 | "socio", 1782 | "sodio", 1783 | "sol", 1784 | "solapa", 1785 | "soldado", 1786 | "soledad", 1787 | "sólido", 1788 | "soltar", 1789 | "solución", 1790 | "sombra", 1791 | "sondeo", 1792 | "sonido", 1793 | "sonoro", 1794 | "sonrisa", 1795 | "sopa", 1796 | "soplar", 1797 | "soporte", 1798 | "sordo", 1799 | "sorpresa", 1800 | "sorteo", 1801 | "sostén", 1802 | "sótano", 1803 | "suave", 1804 | "subir", 1805 | "suceso", 1806 | "sudor", 1807 | "suegra", 1808 | "suelo", 1809 | "sueño", 1810 | "suerte", 1811 | "sufrir", 1812 | "sujeto", 1813 | "sultán", 1814 | "sumar", 1815 | "superar", 1816 | "suplir", 1817 | "suponer", 1818 | "supremo", 1819 | "sur", 1820 | "surco", 1821 | "sureño", 1822 | "surgir", 1823 | "susto", 1824 | "sutil", 1825 | "tabaco", 1826 | "tabique", 1827 | "tabla", 1828 | "tabú", 1829 | "taco", 1830 | "tacto", 1831 | "tajo", 1832 | "talar", 1833 | "talco", 1834 | "talento", 1835 | "talla", 1836 | "talón", 1837 | "tamaño", 1838 | "tambor", 1839 | "tango", 1840 | "tanque", 1841 | "tapa", 1842 | "tapete", 1843 | "tapia", 1844 | "tapón", 1845 | "taquilla", 1846 | "tarde", 1847 | "tarea", 1848 | "tarifa", 1849 | "tarjeta", 1850 | "tarot", 1851 | "tarro", 1852 | "tarta", 1853 | "tatuaje", 1854 | "tauro", 1855 | "taza", 1856 | "tazón", 1857 | "teatro", 1858 | "techo", 1859 | "tecla", 1860 | "técnica", 1861 | "tejado", 1862 | "tejer", 1863 | "tejido", 1864 | "tela", 1865 | "teléfono", 1866 | "tema", 1867 | "temor", 1868 | "templo", 1869 | "tenaz", 1870 | "tender", 1871 | "tener", 1872 | "tenis", 1873 | "tenso", 1874 | "teoría", 1875 | "terapia", 1876 | "terco", 1877 | "término", 1878 | "ternura", 1879 | "terror", 1880 | "tesis", 1881 | "tesoro", 1882 | "testigo", 1883 | "tetera", 1884 | "texto", 1885 | "tez", 1886 | "tibio", 1887 | "tiburón", 1888 | "tiempo", 1889 | "tienda", 1890 | "tierra", 1891 | "tieso", 1892 | "tigre", 1893 | "tijera", 1894 | "tilde", 1895 | "timbre", 1896 | "tímido", 1897 | "timo", 1898 | "tinta", 1899 | "tío", 1900 | "típico", 1901 | "tipo", 1902 | "tira", 1903 | "tirón", 1904 | "titán", 1905 | "títere", 1906 | "título", 1907 | "tiza", 1908 | "toalla", 1909 | "tobillo", 1910 | "tocar", 1911 | "tocino", 1912 | "todo", 1913 | "toga", 1914 | "toldo", 1915 | "tomar", 1916 | "tono", 1917 | "tonto", 1918 | "topar", 1919 | "tope", 1920 | "toque", 1921 | "tórax", 1922 | "torero", 1923 | "tormenta", 1924 | "torneo", 1925 | "toro", 1926 | "torpedo", 1927 | "torre", 1928 | "torso", 1929 | "tortuga", 1930 | "tos", 1931 | "tosco", 1932 | "toser", 1933 | "tóxico", 1934 | "trabajo", 1935 | "tractor", 1936 | "traer", 1937 | "tráfico", 1938 | "trago", 1939 | "traje", 1940 | "tramo", 1941 | "trance", 1942 | "trato", 1943 | "trauma", 1944 | "trazar", 1945 | "trébol", 1946 | "tregua", 1947 | "treinta", 1948 | "tren", 1949 | "trepar", 1950 | "tres", 1951 | "tribu", 1952 | "trigo", 1953 | "tripa", 1954 | "triste", 1955 | "triunfo", 1956 | "trofeo", 1957 | "trompa", 1958 | "tronco", 1959 | "tropa", 1960 | "trote", 1961 | "trozo", 1962 | "truco", 1963 | "trueno", 1964 | "trufa", 1965 | "tubería", 1966 | "tubo", 1967 | "tuerto", 1968 | "tumba", 1969 | "tumor", 1970 | "túnel", 1971 | "túnica", 1972 | "turbina", 1973 | "turismo", 1974 | "turno", 1975 | "tutor", 1976 | "ubicar", 1977 | "úlcera", 1978 | "umbral", 1979 | "unidad", 1980 | "unir", 1981 | "universo", 1982 | "uno", 1983 | "untar", 1984 | "uña", 1985 | "urbano", 1986 | "urbe", 1987 | "urgente", 1988 | "urna", 1989 | "usar", 1990 | "usuario", 1991 | "útil", 1992 | "utopía", 1993 | "uva", 1994 | "vaca", 1995 | "vacío", 1996 | "vacuna", 1997 | "vagar", 1998 | "vago", 1999 | "vaina", 2000 | "vajilla", 2001 | "vale", 2002 | "válido", 2003 | "valle", 2004 | "valor", 2005 | "válvula", 2006 | "vampiro", 2007 | "vara", 2008 | "variar", 2009 | "varón", 2010 | "vaso", 2011 | "vecino", 2012 | "vector", 2013 | "vehículo", 2014 | "veinte", 2015 | "vejez", 2016 | "vela", 2017 | "velero", 2018 | "veloz", 2019 | "vena", 2020 | "vencer", 2021 | "venda", 2022 | "veneno", 2023 | "vengar", 2024 | "venir", 2025 | "venta", 2026 | "venus", 2027 | "ver", 2028 | "verano", 2029 | "verbo", 2030 | "verde", 2031 | "vereda", 2032 | "verja", 2033 | "verso", 2034 | "verter", 2035 | "vía", 2036 | "viaje", 2037 | "vibrar", 2038 | "vicio", 2039 | "víctima", 2040 | "vida", 2041 | "vídeo", 2042 | "vidrio", 2043 | "viejo", 2044 | "viernes", 2045 | "vigor", 2046 | "vil", 2047 | "villa", 2048 | "vinagre", 2049 | "vino", 2050 | "viñedo", 2051 | "violín", 2052 | "viral", 2053 | "virgo", 2054 | "virtud", 2055 | "visor", 2056 | "víspera", 2057 | "vista", 2058 | "vitamina", 2059 | "viudo", 2060 | "vivaz", 2061 | "vivero", 2062 | "vivir", 2063 | "vivo", 2064 | "volcán", 2065 | "volumen", 2066 | "volver", 2067 | "voraz", 2068 | "votar", 2069 | "voto", 2070 | "voz", 2071 | "vuelo", 2072 | "vulgar", 2073 | "yacer", 2074 | "yate", 2075 | "yegua", 2076 | "yema", 2077 | "yerno", 2078 | "yeso", 2079 | "yodo", 2080 | "yoga", 2081 | "yogur", 2082 | "zafiro", 2083 | "zanja", 2084 | "zapato", 2085 | "zarza", 2086 | "zona", 2087 | "zorro", 2088 | "zumo", 2089 | "zurdo" 2090 | }; 2091 | } -------------------------------------------------------------------------------- /src/main/java/com/develop/mnemonic/wordlists/WordList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * BIP39 library, a Java implementation of BIP39 3 | * Copyright (C) 2017 Alan Evans, NovaCrypto 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | * Original source: https://github.com/NovaCrypto/BIP39 19 | * You can contact the authors via github issues. 20 | */ 21 | 22 | package com.develop.mnemonic.wordlists; 23 | 24 | public interface WordList { 25 | 26 | /** 27 | * Get a word in the word list. 28 | * 29 | * @param index Index of word in the word list [0..2047] inclusive. 30 | * @return the word from the list. 31 | */ 32 | String getWord(final int index); 33 | 34 | /** 35 | * Get the space character for this language. 36 | * 37 | * @return a whitespace character. 38 | */ 39 | char getSpace(); 40 | } --------------------------------------------------------------------------------