LoginSignup
1
0

More than 5 years have passed since last update.

サクッとBCryptで文字列を暗号化する

Last updated at Posted at 2018-08-16

コマンドライン引数で文字列をBCryptで暗号化するコード書いたのでメモしておく。

Mavenなどのパッケージ管理ツール使わず、とにかくサクッとやる想定。

パッケージダウンロード

利用するライブラリをサイトから手動ダウンロードする。

spring-security-coreだけだと実行時にcommons-loggingがないというjava.lang.NoClassDefFoundErrorが出力されるので、とりあえず追加。

実装

これらのライブラリをlib配下に格納し、以下の2クラスを実装する。

引数をBCryptで暗号化するCLBCryptPasswordEncoder.java。

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.apache.commons.logging.LogFactory;

public class CLBCryptPasswordEncoder{
  public static void main(String args[]){

    String textPassword = args[0];

    BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
    System.out.println(encoder.encode(textPassword));
  }
}

平文パスワードと暗号化済パスワードが一致するか確認するCLBCryptPasswordMatcher.java。

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.apache.commons.logging.LogFactory;

public class CLBCryptPasswordMatcher{
  public static void main(String args[]){
    BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();

    String textPassword = args[0];
    String encryptedPassword = args[1];

    if (encoder.matches(textPassword, encryptedPassword)) {
      System.out.println("matched");
    } else {
      System.out.println("mismatched");
    }
  }
}

ディレクトリ構成

ディレクトリ構造は以下のとおり。

  • CLBCryptPasswordEncoder.java
  • CLBCryptPasswordMatcher.java
  • lib/
    • commons-logging-1.2.jar
    • spring-security-core-5.0.2.RELEASE.jar

コンパイル

$ javac -cp "lib/*" CLBCryptPasswordEncoder.java
$ javac -cp "lib/*" CLBCryptPasswordMatcher.java

カレントディレクトリにクラスが生成される。

実行

暗号化と検証の実行。classpathにカレントディレクトリを追加。

$ java -cp "lib/*:." CLBCryptPasswordEncoder sonomirai
$2a$10$ALcXPgrpOQKXoIyrgS90huCbgR906LtWrH1dOsZmHtBZdSB19n9Bi
$ java -cp "lib/*:." CLBCryptPasswordMatcher sonomirai '$2a$10$ALcXPgrpOQKXoIyrgS90huCbgR906LtWrH1dOsZmHtBZdSB19n9Bi'
matched
$ java -cp "lib/*:." CLBCryptPasswordMatcher dummypswd '$2a$10$ALcXPgrpOQKXoIyrgS90huCbgR906LtWrH1dOsZmHtBZdSB19n9Bi'
mismatched

こんな感じでやりたかったことはやれた。

1
0
23

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0