【Java】saltで乱数生成クラスを作成する
saltとは
salt とは一定長以上の文字列で、以下の要件を満たすものです。
- ユーザー毎に違うこと
- ある程度の長さがあること(20桁以上が目安)
saltの使用
パスワードを安全に保存するために最低限 、saltとハッシュ関数を使用されたりしています。
基本的には、ログインパスワードなどの暗号化項目をデータベースに保存する際など、
saltとハッシュ関数を組み合わせて保存します。
salt は具体的に以下のように処理します。
ハッシュ化パスワード = ハッシュ関数 (salt + パスワード)
salt生成クラス
今回は、SecureRandomクラスを用いてsaltを生成します。
java.security.SecureRandom
package salt; import java.security.SecureRandom; public class CreateSalt { // salt文字列 private static final String[] RANDOM_CODE = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; // 桁数 private static final int LENGTH = 20; public static void main(String[] args) { String result = ""; for (int i = 0; i < LENGTH; i++) { int count = new SecureRandom().nextInt(RANDOM_CODE.length); result += RANDOM_CODE[count]; } System.out.println("【salt文字列】"+result); } }