加扰字母php

时间:2009-01-30 10:53:49

标签: php

我想争抢所有a-zA-Z 一个世界 像

您好 变 shrxs 要么 bhidf

其余的应该保持不变。 例如。 “你好世界!”=“ksgii fishl!”

4 个答案:

答案 0 :(得分:11)

目前尚不清楚这是否可以逆转,所以这里有两个备选答案。

“你好”成为“shrxs”意味着一种超越简单替换(a caesar cipher)的方案,可能类似于多字母密码。

但是对于一个简单的凯撒密码,你可以使用strtr

$plain="hello";
$cipher = strtr($plain, 
    "abcdefghijklmnopqrstuvwxyz", 
    "tuvhijkcwxyzldefgsmnopqrab");
echo $cipher;

会显示“cizze”;

如果你不需要反转加扰,并想要一些真正随机的东西,试试这个

function random_char($matches)
{
   return chr(rand(ord('a'),ord('z')));
}

$plain="hello";

$random=preg_replace_callback(
           "{[a-z]}i",
           "random_char",
           $plain);

echo $random;

这里我们使用preg_replace_callback将每个char替换为random_char回调的随机替代。

答案 1 :(得分:5)

您可能还想查看str_rot13函数,它具有可逆性的优势。

<?php
  var $foo = "hello world!";
  var $bar = str_rot13($foo); // $bar equals "uryyb jbeyq!"
  var $baz = str_rot13($bar); // $baz equals "hello world!"
?>

答案 2 :(得分:1)

你到底是什么意思?我可以看到你没有通过字母表重新排列或计算字母。

听起来你只想知道如何更换a-zA-Z字符。因此无论您的转换功能如何,这都是您可以做到的一种方式:

$result = preg_replace_callback('/[a-zA-Z]/', 'charTransform', $oldstring);

然后将变换定义为回调:

function charTransform($matches) {
   $oldchar = $matches[0];
   return strtolower($oldchar); // replace with whatever you want
}

答案 3 :(得分:1)

问题是,您希望文本加密或加密,即文本是否可以解密?如果您只是想用其他随机字母替换所有字母,您可以尝试这样的事情:

$text = "Hello world!\n";
$text = preg_replace_callback(
        '/[a-zA-Z]/',
        create_function('$matches', 'return chr(rand(97,122));'),
        $text
    );