当前位置:首页 > PHP

凯撒密码在php中实现

2026-02-28 04:27:35PHP

凯撒密码简介

凯撒密码是一种古老的替换加密技术,通过将字母表中的每个字母移动固定位数实现加密。例如,位移为3时,"A"变为"D","Z"循环变为"C"。

凯撒密码在php中实现

PHP实现凯撒加密

以下代码实现字母的位移加密,支持大小写字母保留,非字母字符保持不变:

凯撒密码在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内置函数
}

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

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

相关文章

react实现密码隐藏功能

react实现密码隐藏功能

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

css如何制作密码

css如何制作密码

使用CSS制作密码输入框样式 通过CSS可以美化密码输入框的显示效果,使其更符合整体设计风格。以下是常见的几种方法: 基础样式定制 input[type="password"] { paddi…

js实现密码输入后校验

js实现密码输入后校验

密码校验实现方法 在JavaScript中实现密码输入校验可以通过多种方式完成,以下是几种常见的实现方法: 正则表达式校验 使用正则表达式可以快速验证密码复杂度要求。例如要求密码包含大小写字母、数字…

uniapp蓝牙密码

uniapp蓝牙密码

关于UniApp蓝牙密码的使用 在UniApp中开发蓝牙功能时,涉及密码或配对码的场景通常出现在蓝牙设备连接阶段。以下是关键信息整理: 蓝牙配对流程 UniApp通过uni.connectBluet…

react如何保存密码

react如何保存密码

保存密码的安全实践 在React应用中保存密码需要遵循严格的安全准则,直接明文存储密码是高风险行为。以下是推荐的安全方案: 使用环境变量 敏感信息如API密钥或数据库密码应通过环境变量管理,配合do…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie存储登录信息 在PHP中,可以通过设置Cookie来存储用户的登录信息。当用户勾选“记住密码”选项时,将用户名和加密后的密码存储在Cookie中。加密可以使用password_hash…