凯撒密码在php中实现
凯撒密码简介
凯撒密码是一种替换加密技术,通过将字母表中的每个字母移动固定位数(密钥)实现加密。例如密钥为3时,"A"加密为"D","Z"加密为"C"(循环移位)。
PHP实现凯撒加密
以下代码实现字母的凯撒加密,支持大小写字母,忽略非字母字符:

function caesarEncrypt($text, $shift) {
$result = "";
$length = strlen($text);
for ($i = 0; $i < $length; $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;
}
参数说明
$text: 待加密的字符串$shift: 移位值(密钥)
示例调用echo caesarEncrypt("Hello, World!", 3); // 输出 "Khoor, Zruog!"
PHP实现凯撒解密
解密只需将移位值取反:

function caesarDecrypt($text, $shift) {
return caesarEncrypt($text, 26 - $shift); // 利用26字母循环特性
}
示例调用
echo caesarDecrypt("Khoor, Zruog!", 3); // 输出 "Hello, World!"
注意事项
- 仅支持字母:数字和符号不会被加密。
- 密钥范围:移位值建议在0-25之间,超出时会自动取模(如
27 % 26 = 1)。 - 安全性:凯撒密码易受暴力破解,仅适用于教学或简单场景。
扩展:处理Unicode字符
若需支持多语言字符(如中文),需改用mb_*函数处理:
function unicodeCaesar($text, $shift) {
$result = "";
$chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
foreach ($chars as $char) {
$code = mb_ord($char);
if ($code >= 0x4E00 && $code <= 0x9FA5) { // 中文Unicode范围示例
$result .= mb_chr(($code - 0x4E00 + $shift) % 20902 + 0x4E00);
} else {
$result .= $char;
}
}
return $result;
}
需自定义mb_ord和mb_chr函数(参考PHP文档)。






