当前位置:首页 > PHP

凯撒密码在php中实现

2026-02-28 04:27:35PHP

凯撒密码简介

凯撒密码是一种古老的替换加密技术,通过将字母表中的每个字母移动固定位数实现加密。例如,位移为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内置函数
}

这种实现方式保持了凯撒密码的经典特性,同时具备代码简洁性和可扩展性。可根据需要调整位移参数或扩展字符处理范围。

凯撒密码在php中实现

标签: 凯撒密码
分享给朋友:

相关文章

vue 实现密码验证

vue 实现密码验证

密码验证的实现方法 在Vue中实现密码验证可以通过多种方式完成,以下是几种常见的实现方法: 使用Vuelidate进行验证 安装Vuelidate库: npm install vuelidate…

vue实现密码隐藏

vue实现密码隐藏

Vue 实现密码隐藏 在 Vue 中实现密码隐藏功能,可以通过动态切换输入框的 type 属性(password 或 text)来实现。以下是具体实现方法: 方法一:使用 v-model 和 v-…

vue怎么实现手势密码

vue怎么实现手势密码

Vue 实现手势密码的方法 使用第三方库 vue-gesture-password vue-gesture-password 是一个专门为 Vue 设计的轻量级手势密码组件,支持自定义样式和事件。…

vue实现密码明文切换

vue实现密码明文切换

实现密码明文切换功能 在Vue中实现密码输入框的明文/密文切换功能,可以通过动态绑定input元素的type属性来实现。以下是具体实现方法: 模板部分 <template> &…

react实现密码隐藏功能

react实现密码隐藏功能

实现密码隐藏功能的方法 在React中实现密码隐藏功能通常涉及使用input元素的type属性切换(password和text),并结合状态管理控制显示/隐藏状态。以下是具体实现方式: 使用us…

记住密码 php实现

记住密码 php实现

实现记住密码功能的方法 在PHP中实现记住密码功能通常通过Cookie或Session结合数据库验证完成。以下是两种常见实现方式: 基于Cookie的实现 设置长期有效的Cookie存储用户登…