LoginSignup
1
1

【自作アプリ】実装機能➂

Posted at

今回はログイン部分の機能について解説していこうと思います。

私のアプリケーション作成で使用しているものはSHA256になります。
SHA256とは何かという事ですが「ハッシュ化」という意味で256はハッシュ化する際のbit数になります。
実際に使用しているものが以下のものになります。

ハッシュ化

//CipherUtils.java
public static String encrypt(String target) {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(target.getBytes());
            return Base64.encodeBase64URLSafeString(md.digest());
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

encript(String 引数)で暗号化する対象を取得しハッシュ化します。
例)ユーザー新規登録の際にDBに保存する時に使用
ログイン時、DBのデータと照合する際に使用

そもそもSHA256だけではなくAES256なども存在します。何が違うかというと大きく、暗号化したものを復号化できるかどうかです。暗号化したものは復号化不可能なSHA256に対しAES256は復号化可能です。

メリット

・復号化できない
・DBのデータ漏れた際にも複合化できないハッシュ値なのでデータ漏洩の心配が少ない

復号化ができないがどうやって整合性を取るのか
⇨ログインした際に入力したパスワードなどを同じロジックでハッシュ化し、DBのデータと照らし合わせる。

実際の現場でもAESを使用しているところやSHAを使用しているところ、両方を使用しているところがあるようです。組み合わせて使用するのが正解なのかもしれません。

【振り返り】

暗号化(ハッシュ化)、復号化を勉強して思ったことは2進数、8進数、16進数をしっかり理解しているか不安になったことです。今回記事にする上でもう一度bitなどについて調べてみました。

振り返ることによって新たな気づきが得られてよかったです。

1
1
0

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
1