凯撒密码在php中实现
凯撒密码简介
凯撒密码是一种古老的替换加密技术,通过将字母表中的每个字母移动固定位数实现加密。例如,位移为3时,"A"变为"D","Z"循环变为"C"。
PHP实现凯撒加密
以下代码实现字母的位移加密,支持大小写字母保留,非字母字符保持不变:
function caesarEncrypt($text, $shift) {
$result = "";
$shift = $shift % 26; // 确保位移在0-25范围内
for ($i = 0; $i < strlen($text); $i++) {
$char = $text[$i];
if (ctype_upper($char)) {
$result .= chr((ord($char) + $shift - 65) % 26 + 65);
} elseif (ctype_lower($char)) {
$result .= chr((ord($char) + $shift - 97) % 26 + 97);
} else {
$result .= $char;
}
}
return $result;
}
PHP实现凯撒解密
解密函数只需将位移取反即可:
function caesarDecrypt($text, $shift) {
return caesarEncrypt($text, 26 - $shift); // 利用26-位移实现反向操作
}
使用示例
$original = "Hello, World! 2023";
$shift = 5;
$encrypted = caesarEncrypt($original, $shift);
$decrypted = caesarDecrypt($encrypted, $shift);
echo "Original: $original\n";
echo "Encrypted: $encrypted\n";
echo "Decrypted: $decrypted\n";
注意事项
- 位移值应为0-25的整数,负数位移会自动转换为等效正数
- 仅对英文字母进行加密,数字和标点符号保持不变
- 循环处理通过模运算实现(如'Z'位移3变为'C')
- 加解密函数对大小写字母分别处理
扩展实现
如需扩展为ROT13(位移13的特殊凯撒密码):
function rot13($text) {
return str_rot13($text); // PHP内置函数
}
这种实现方式保持了凯撒密码的经典特性,同时具备代码简洁性和可扩展性。可根据需要调整位移参数或扩展字符处理范围。







