ゆう's Blog
暗号化

主に以下の2種類があります:

共通鍵暗号(対称暗号):
同じ鍵を使ってデータを暗号化・復号します。
例: AES(Advanced Encryption Standard)
利点: 処理が高速。
課題: 鍵を安全に共有する必要がある。

公開鍵暗号(非対称暗号):
公開鍵で暗号化し、対応する秘密鍵で復号します。
例: RSA、ECC(Elliptic Curve Cryptography)
利点: 鍵を共有する必要がない(公開鍵は誰でも使える)。
課題: 処理が遅い。


公開鍵暗号の仕組み
公開鍵暗号では、以下のような流れでデータを保護します:
鍵ペアの生成:
公開鍵と秘密鍵のペアを生成します。
公開鍵は暗号化に使用され、誰でも利用可能です。
秘密鍵は復号に使用され、厳重に保管します。
暗号化:
公開鍵を使ってデータを暗号化します。
暗号化されたデータは、公開鍵に対応する秘密鍵でしか復号できません。
復号:
秘密鍵を使って暗号化されたデータを復号します。
公開鍵では復号できないため、秘密鍵が漏洩しない限り安全です。


1. 公開鍵は暗号化にしか使用されない:
公開鍵は暗号化のプロセスに使用されます。一方で、復号に必要なのは「秘密鍵」のみです。そのため、暗号化プロセスで使用された公開鍵がリロードによって更新されても、暗号化されたデータは生成された秘密鍵で復号可能です。

2. 暗号化データと秘密鍵の関係:
RSA(または非対称暗号)の仕組みにより、暗号化されたデータは公開鍵に対応する秘密鍵だけで復号できます。暗号化されたデータ自体は公開鍵の更新によって影響を受けません。つまり、元の秘密鍵を保持していれば復号が可能です。

3. 復号は新しい公開鍵に依存しない:
新しい公開鍵が生成されたとしても、復号処理ではその新しい公開鍵は使われません。復号時に必要なのは、暗号化時に使用された公開鍵に対応する秘密鍵です。この秘密鍵が正しく入力されていれば、暗号化されたデータを正常に復号できます。

4. 暗号化データの変更がない限り有効:
暗号化されたデータそのものが破損したり変更されたりしていない限り、元の秘密鍵を用いることで復号可能です。


公開鍵は暗号化にしか使用されない。復号時に必要なのは暗号化時の秘密鍵。

GETクエリ

POST:維持

GET:上書き
残したいなら、input[type="hidden"] を使ってフォームデータにパラメータを加える。

lastInsertId()関数

// 挿入したIDを取得 $id = $dbh->lastInsertId();

テーブル内のカラム名がidである必要はありません。この関数は、直前に実行されたINSERTクエリによって生成された自動インクリメント値を返します。そのため、カラム名が何であれ、テーブル内で自動インクリメントとして設定されているカラムであれば機能します。大事なのは、AUTO_INCREMENT属性が設定されているカラムを利用していることです。

連想配列を foreach 文を使って作成する方法

<?php // 元のデータ $keys = ["apple", "banana", "cherry"]; $values = [100, 200, 300]; // 空の連想配列を初期化 $associativeArray = []; // foreach文で配列を作成 foreach ($keys as $index => $key) { $associativeArray[$key] = $values[$index]; } // 結果を表示 print_r($associativeArray); ?>

ショートハンド

指定していない値は、デフォルトにリセットしてしまう。

テキスト色と背景色の組み合わせ

テキスト色と背景色の組み合わせ
テキスト色背景色説明
#333333#FFFFFFダークグレーのテキストと白い背景で、柔らかなコントラスト。
#4D4D4D#F5F5F5少し明るめのグレーとオフホワイトで、目に優しい組み合わせ。
#2E2E2E#FAFAFAより濃いグレーと淡い背景色で、モダンな印象を与える。
#4D5156#FFFFFFGoogle(検索結果)
#0F1419#FFFFFFTwitter
#050505#FFFFFFFacebook
#262626#FFFFFFInstagram
#444444#FFFFFF東洋経済オンライン
#222222#FFFFFFNewsPicks
#0F1111#FFFFFFAmazon

<button>タグをリンクに使う

<button type="button" onclick="location.href='https://example.com'">リンク風ボタン</button>

三項演算子, Null合体演算子, エルビス演算子

三項演算子は、条件式 ? 式1 : 式2 という記述を行うことで使用できます。

Null合体演算子(??)は、!is_null($hoge) ? $hoge : $fuga と等価で
エルビス演算子(?:)は、$hoge ? $hoge : $fuga と等価です。

ON UPDATE CURRENT_TIMESTAMP

UPDATEしても、カラムの値が変更されていなければ、更新されない

MySQLのTIMESTAMPは内部的にはUTCで保存されますが、クライアント(この場合はphpMyAdmin)に返す際に、セッションのタイムゾーンに従って変換されます。 もし@@session.time_zoneがSYSTEMになっている場合、MySQLはOSのタイムゾーン設定に依存して値を変換し、その変換後の値を返すため、phpMyAdminではOSのタイムゾーンでの値が表示されます。

タイムゾーンの設定確認

SELECT @@global.time_zone, @@session.time_zone;

SQLにおける論理演算子の優先順位

優先順位: NOT > AND > OR