💬

ハッシュ関数と暗号化って何が違うのか

2021/08/10に公開

ハッシュ関数とは

入力値を変換して別の値を出力する関数のこと。
ハッシュ関数には、内部アルゴリズムの違いごとに異なる関数が用意されている。

ハッシュ関数と暗号化の違い

変換後の値を変換前の値に戻すことができるか否か(不可逆性)の違い。

ハッシュ関数:変換後の値を元に戻す方法がない。
暗号化:変換後の値を元に戻す方法がある。(復号できる)

ハッシュ関数の使い方

https://www.php.net/manual/ja/function.hash.php
hash関数を使うことで、ハッシュを得ることができる。

hash(string $algo, string $data)
$algo: ハッシュ関数で使いたいアルゴリズム
$data: ハッシュ関数で変換したい文字列

第一引数で指定できるアルゴリズムは、以下のように沢山あるが、
代表的なのがsha256らしい。
hash('sha256', 'hoge'):
のように使用する。

第一引数で指定できるアルゴリズム一覧はこちら
https://www.php.net/manual/ja/function.hash-algos.php

暗号化の使い方

暗号化するときは、base64_encodeを使う

https://www.php.net/manual/ja/function.base64-encode.php

base64_encode(string $string):
$string: 暗号化したい文字列

復号化するときは、base64_decodeを使う

https://www.php.net/manual/ja/function.base64-decode.php

base64_decode(string $string, bool $strict = false)
$string: 復号化したい文字列(base64_decodeされた文字列)
$strict: strictを`true`にした場合、$stringにアルファベット以外の文字列が含まれていた場合、falseを返す。strictを`falseにした場合、アルファベット以外の文字列は除外してdecodeする`

base64とは

https://qiita.com/PlanetMeron/items/2905e2d0aa7fe46a36d4
https://wa3.i-3-i.info/word11338.html

すべてのデータを「a~z」「A~Z」「0~9」「+」「/」の64文字と「=」の組み合わせに変換するやり方

Discussion