可逆加密算法(一):ASCII 码加密,恺撒加密,Base64加密

可逆加密算法(一):ASCII 码加密,恺撒加密,Base64加密

ASCII 码加密,恺撒加密,Base64

这三种加密方式都是可逆的。

1 ASCII 码加密和解密

ASCII 码加密就是把字符串的变换成ASCII 码的数字传送。(只能输入英文等字符,不可以输入中文文字!)

加密:

function ASCII_encrypt($str)

{

$arr = str_split($str);

$str_code = '';

foreach ($arr as $k => $v) {

if (ord($v) == 32) {

$str_code .= ord($v);

} else {

$str_code .= ord($v) - 23;

}

}

return $str_code;

}

解密:

function ASCII_decrypt($str)

{

$arr = str_split($str, 2);

$str_code = '';

foreach ($arr as $kk => $vv) {

if ($vv == 32) {

$str_code .= chr($vv);

} else {

$str_code .= chr($vv + 23);

}

}

return $str_code;

}

运行后得到的结果:

$str = 'Fly in the sky!';

$ASCII_encrypt = ASCII_encrypt($str);

echo $ASCII_encrypt;

echo '
';

$ASCII_decrypt = ASCII_decrypt($ASCII_encrypt);

echo $ASCII_decrypt;

478598328287329381783292849810 Fly in the sky!

2 恺撒加密和解密

“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

/**

* @param $str -要加密的字符串

* @param $code -偏移位数

* @param int $type -0(默认)加密,1解密

* @return string

*/

function caesar($str, $code, $type = 0)

{

if ($type == 1) {

$code = -$code;

}

$arr = str_split($str);

$str_caesar = '';

foreach ($arr as $k => $v) {

if (preg_match("/^[a-z]/i", $v)) {

$str_code = ord($v) + $code;

if (strtoupper($v) === $v) {

if ($str_code > ord('Z')) {

$str_code -= 26;

}

if ($str_code < ord('A')) {

$str_code += 26;

}

}

if (strtolower($v) === $v) {

if ($str_code > ord('z')) {

$str_code -= 26;

}

if ($str_code < ord('a')) {

$str_code += 26;

}

}

$str_caesar .= chr($str_code);

} else {

$str_caesar .= $v;

}

}

return $str_caesar;

}

运行后得到的结果:

$str = 'Fly in the sky!';

$caesar_encrypt = caesar($str,4);

echo $caesar_encrypt;

echo '
';

$caesar_decrypt = caesar($caesar_encrypt,4,1);

echo $caesar_decrypt;

Jpc mr xli woc! Fly in the sky!

3 Base64加密和解密

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

PHP自带有base64加密和解密的函数:如下

$str = 'Fly in the sky!';

$bas = base64_encode($str);

echo $bas;

echo '
';

echo base64_decode($bas);

运行结果:

Rmx5IGluIHRoZSBza3kh Fly in the sky!

以上是我对可逆加密算法的初步认识与理解,后面会继续更新更多的可逆加密算法。

欢迎补充! 千而の大狮子!

相关推荐

今年流行的口红颜色有哪些 2023口红颜色排行榜
S365网络超时

今年流行的口红颜色有哪些 2023口红颜色排行榜

📅 07-01 👁️ 7822
不戴套的情况下经常会秒射,这是不是早泄。如果戴套,进去前不怎么刺激到,时间就会久一些。
逐鹿中原预热活动详解 日常三大任务攻略
365bet网站是多少

逐鹿中原预热活动详解 日常三大任务攻略

📅 07-02 👁️ 5382