PHPでのシーザー暗号の実装方法


  1. シフト関数の実装: まず、シフト関数を作成します。この関数は、指定された数だけ文字をシフトする役割を果たします。以下は、シフト関数の例です。
function shiftChar($char, $shift) {
    if (!ctype_alpha($char)) {
        return $char;
    }
    $ascii_offset = ord(ctype_upper($char) ? 'A' : 'a');
    $shifted_ascii = (($ord - $ascii_offset + $shift) % 26) + $ascii_offset;
    $shifted_char = chr($shifted_ascii);
    return $shifted_char;
}
  1. 暗号化関数の実装: 次に、暗号化関数を作成します。この関数は、与えられた文字列をシーザー暗号で暗号化した結果を返します。以下は、暗号化関数の例です。
function encrypt($text, $shift) {
    $encrypted_text = '';
    for ($i = 0; $i < strlen($text); $i++) {
        $char = $text[$i];
        $encrypted_text .= shiftChar($char, $shift);
    }
    return $encrypted_text;
}
  1. 復号化関数の実装: 最後に、復号化関数を作成します。この関数は、与えられた暗号文をシーザー暗号で復号化した結果を返します。以下は、復号化関数の例です。
function decrypt($encrypted_text, $shift) {
    $decrypted_text = '';
    for ($i = 0; $i < strlen($encrypted_text); $i++) {
        $char = $encrypted_text[$i];
        $decrypted_text .= shiftChar($char, -$shift);
    }
    return $decrypted_text;
}

これらの関数を使用すると、以下のように暗号化と復号化を行うことができます。

$text = "Hello, World!";
$shift = 3;
$encrypted_text = encrypt($text, $shift);
echo "暗号化されたテキスト: " . $encrypted_text . "\n";
$decrypted_text = decrypt($encrypted_text, $shift);
echo "復号化されたテキスト: " . $decrypted_text . "\n";

このコードは、与えられたテキストをシフト数で指定された回数だけシフトして暗号化し、その後、同じシフト数で復号化する例です。実行すると、次の結果が表示されます。

暗号化されたテキスト: Khoor, Zruog!
復号化されたテキスト: Hello, World!

以上がPHPでのシーザー暗号の実装方法とコード例です。この方法を利用すると、簡単な暗号化や復号化を行うことができます。