[CS]暗号化


暗号化とは?



認証の前に、プライバシー保護は欠かせません.
暗号化の具体的な手順は次のとおりです.
bcryptでサポートされている暗号化は、バイトフォーマットのデータです.
したがって、通常、入力したstringフォーマットのデータをバイトフォーマットに変換する必要がある.
これをstring->byte形式に変換し、符号化と呼ぶ.
逆に復号と呼ばれbyte-stringフォーマットです.
password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)
b'$2b$12$YFs9rh.1LgJwZuf9ibyjpuLvBoCaGX0MzedFWF2Jo0zU3lMZurZ4a'
同様に、例では、識別可能なUnicode文字仕様UTF−8が符号化/復号時に使用される.
type(hashed_password)
<class 'bytes'>
暗号化された文字(byte形式)を取得できます.
この暗号化方式は一方向暗号化であり,復号できない.
bcrypt.checkpw(入力された文字、暗号化された文字)/byte
だから文字を確認する方法でbcryptcheckpw()メソッドを用いて,基本形状を以下に示す.

ワンウェイ機能とは?


一度暗号化すると復号できません.簡単に言えば、ジャガイモを煮てジャガイモの泥を作りたいのは簡単です.マッシュポテトを作ると、つぶしたものと考えられ、丸いジャガイモの形に還元できません.また,暗号化の結果を要約と呼ぶ.

Bcrypt(SHA-256暗号化アルゴリズム)

  • Salting、キーストレッチを簡略化するためのクラシックライブラリ
  • は多くの言語をサポートし、
  • を便利にします.
  • ハッシュ結果値=salting+hash値とともに保存->DB設計の複雑度最小化
  • Salting, Key Stretching


    一方向ハッシュ関数の欠点はRainbowテーブル(ハッシュ値を計算する個別テーブル)に攻撃されやすいことである.それだけでなく,ハッシュ関数の特性は検索性能を向上させるために設計されているため,ハッカー攻撃時に迅速に照合できるため,セキュリティ上の危険性がある.
  • salting:上記の問題を解決するために、追加のデータ計算ハッシュ値
  • を加える.
  • keystretching:復号を繰り返すことで,導出が困難になる.
  • TIL認証と承認
    TIL bcrypt+pyjwt練習