skillup

技術ブログ

プログラミング全般

Encypter、Decrypeterについて

投稿日:2022年7月16日 更新日:

独自の鍵を使ってencrypt,decrptメソッドを実装したので、メモを。

参考ソース

https://github.com/umanari145/admin_tool/commit/03e1158bcc857b19c54c200653d275d5e290437d

以下のソースを取り入れて実装(composerではlaravel8ではすでに取り込みができませんでした・・・)

https://github.com/taylornetwork/encrypter

encrypt,decrptの内部について

単純に別鍵でencrypt,decryptを使用したため、内部の暗号化処理そのものはいじっておらず、わからんことが多かったんですが、なんとか流れを追ってみると・・

  • 暗号自体の処理はランダム文字列、文字列そのもの、署名の3つの文字を組み合わせ
  • ここで使われるランダム文字列をiv(initial vector)なんていうらしい
  • IV(initial vector)の意義について・・共通の鍵を使うと同じ暗号文になるのを防ぐ意図から
  • 上記の組み合わせをjsonにし、base64エンコーディングさせて暗号化している
  • laravelのapp.config内部の'cipher' => 'AES-256-CBC'は暗号化方式
  • 署名作成の際、文字列のハッシュ化で鍵を使い(laravelの場合APP_KEYがdefault),hash_hmac関数を使う(ハッシュ化に関してはsha256が一般的)

What’s behind Laravel Encryption/Decryption

PHPで暗号化・復号化を行う方法(OpenSSL)

base64エンコーディングについて

なんとなくバイナリ(特に画像)のエンコーディング時に使ってましたが、これを機にちょっと調査。

64の意味は・・すべてのデータを64種類のアルファベット(a~zA~z)と数字(0~9)、一部の記号(+,/)で表記するため

元々はメール送信時にバイナリデータを送受信しようと考えたときに、MIMEという規格が登場し、画像などのバイナリデータを送信するために考え出された規格のようです。

base64ってなんぞ??理解のために実装してみた

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

設定ファイルの置き場所

一般的にレベルの高いソースとは保守性が高いものを指します。特にWEB系ですと仕様変更がしょっちゅうなので変更があったときにいかに少ない工数で対応できるかが大切です。 保守性をあげる工夫はいろいろありま …

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

メモリに関して 静的領域、スタック、ヒープなど

実務でメモリの調査をしましたが、肝心のメモリについてほとんどわかっていないのでメモ。 メモリの領域を大きく分けると静的、スタック、ヒープに別れる。 Contents1 静的2 スタック3 ヒープ4 そ …

no image

ExcelVBAに関して(主にプロシージャ)

いつも半年ごとぐらいに触っていてあまり知識が蓄積しないので(汗)これを機につまづいたところをちょっとメモ。 Contents1 基本2 メモ3 参考リンク 基本 基本的な変数の代入や条件分岐、ループな …

no image

emptyの扱いに関して

PHPで空白や存在確認として便利なemptyですが、乱用すると意図しない動きをすることがあるケースが多々あります。 Contents1 emptyの挙動に関して2 数値の03 検索などの全判定と値のな …

アーカイブ