凯撒密码是一种经典移位加密算法,通过将字母按固定位数循环移动实现加密,支持大小写区分处理,非字母字符通常保留原样,适用于教学或轻量混淆场景。

字符串加密不一定要用复杂的AES或RSA,PHP中用简单算法也能实现基础混淆和保护,比如凯撒移位、异或、Base64混合、自定义映射等。这类“简易算法”适合教学、小工具、配置项隐藏或防止明文被直接扫到,但不可用于密码、支付、敏感凭证等真实安全场景。
凯撒移位(字母偏移)
对英文字母按固定位数循环移动,如A→D、B→E(+3),数字和符号可保持不变或统一偏移。PHP实现简洁,支持大小写区分:
function caesarEncrypt($str, $shift = 3) {
$result = '';
for ($i = 0; $i 异或加密(XOR Cipher)
利用异或的可逆性(a ^ b ^ b = a),用一个密钥字节循环异或每个字符。轻量、对称、无长度膨胀,适合短文本临时混淆:
function xorEncrypt($str, $key = 'php') {
$result = '';
$keyLen = strlen($key);
for ($i = 0; $i function xorDecrypt($encoded, $key = 'php') {
$raw = base64_decode($encoded);
$result = '';
$keyLen = strlen($key);
for ($i = 0; $i 字符映射替换(自定义密码表)
预先定义明文字符到密文字符的一一映射(如 a↔z, b↔y… 或打乱顺序),类似古典密码中的“单表替换”。安全性依赖映射表保密性:
function mapEncrypt($str, $map = null) {
static $defaultMap = [
'a'=>'x', 'b'=>'q', 'c'=>'w', 'd'=>'e', 'e'=>'r', 'f'=>'t',
'g'=>'y', 'h'=>'u', 'i'=>'i', 'j'=>'o', 'k'=>'p', 'l'=>'a',
'm'=>'s', 'n'=>'d', 'o'=>'f', 'p'=>'g', 'q'=>'h', 'r'=>'j',
's'=>'k', 't'=>'l', 'u'=>'z', 'v'=>'x', 'w'=>'c', 'x'=>'v',
'y'=>'b', 'z'=>'n', '0'=>'9', '1'=>'8', '2'=>'7', '3'=>'6',
'4'=>'5', '5'=>'4', '6'=>'3', '7'=>'2', '8'=>'1', '9'=>'0'
];
$map = $map ?: $defaultMap;
return strtr(strtolower($str), $map);
}
<p>function mapDecrypt($str, $map = null) {
static $defaultMap = null;
if ($defaultMap === null) {
$defaultMap = [
'a'=>'x', 'b'=>'q', 'c'=>'w', ... // 同上
];
$rev = [];
foreach ($defaultMap as $k => $v) $rev[$v] = $k;
$defaultMap = $rev;
}
$map = $map ?: $defaultMap;
return strtr(strtolower($str), $map);
}</p>组合加固:Base64 + 移位 + 时间盐值
单一算法易被识别,叠加处理可提升混淆强度。例如:先Base64编码,再对结果做凯撒移位,最后拼接时间戳哈希作为校验前缀(非加密,仅防篡改):
function simpleObfuscate($str, $salt = '') {
$salt = $salt ?: md5(time());
$b64 = base64_encode($str);
$shifted = caesarEncrypt($b64, 5); // 复用前面的caesarEncrypt
return substr($salt, 0, 8) . $shifted;
}
<p>function simpleDeobfuscate($obf, $salt = '') {
$shifted = substr($obf, 8);
$b64 = caesarEncrypt($shifted, -5); // 反向移位
return base64_decode($b64);
}</p>这些方法在PHP经典题库中常作为入门练习,重在理解加密逻辑与字符串操作。实际项目中若需真正安全,请使用openssl_encrypt()配合AES-256-CBC等标准方案,并妥善管理密钥和IV。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











