【问题标题】:create simple encryption code in PHP by replacing characters通过替换字符在 PHP 中创建简单的加密代码
【发布时间】:2018-10-03 20:37:49
【问题描述】:

我是 PHP 新手。

我想在 PHP 中创建一个简单的加密函数,通过更改字符将字符串更改为新字符串。

为此,我创建了两个字符数组。

在第一个数组中,我分配所有字符并将它们排序:

$true_chars = array('a','b','c','d','e');

在另一个数组中,我改变了字符的位置。

$fake_chars = array('c','d','a','e','b');

我的目标是,当函数获得正确的字符串时,通过替换第二个数组来更改字符串字符。

例如,我的字符串是acdc,加密函数将acdc字符与第一个数组进行比较以获得真正的索引(如果需要),然后用第二个数组索引替换并将其更改为caea

实际上我该怎么做?

【问题讨论】:

标签: php arrays string encryption char


【解决方案1】:

首先创建一个将原始字符映射到编码字符的数组:

$chars = [
    'a' => 'c',
    'b' => 'd',
    'c' => 'a',
    'd' => 'e',
    'e' => 'b',
];

然后你遍历字符串并替换字符:

$original  = 'acdc';

// Encrypt
$encrypted = '';

for ($i = 0; $i < strlen($original); $i++) {
    // If we find the character in our mapping array, use the mapped character.
    // If not, let's use the original character.
    $encrypted .= array_key_exists($original[$i], $chars) 
        ? $chars[$original[$i]]
        : $original[$i];
}

print_r($encrypted);
// caea

要解密它,我们只需要检查字符是否存在于数组中并使用密钥代替:

// Decrypt
$decrypted = '';
for ($i = 0; $i < strlen($encrypted); $i++) {
    // Find the correct key
    $key = array_search($encrypted[$i], $chars);

    // If the character existed, use the key.
    // If not, use the original character.
    $decrypted .= $key !== false 
        ? $key
        : $encrypted[$i];
}

print_r($decrypted);
// acdc

演示:https://3v4l.org/vQAZj

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多