├── .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 | }
--------------------------------------------------------------------------------