ThinkPHP实现凯撒密码加密和解密 ,在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
//凯撒密码加密
public function caesarencrypt(Request $request)
{
$data = UtilService::postMore([
['content', 'www.ex60.com'],//加密内容
['pyl', 1],//偏移量
], $request);
$text = trim($data['content']);
$shift = $data['pyl'];
$encryptedText = '';//用于存储加密文本的空字符串
foreach (str_split($text) as $c) { //遍历每个字符
if (ctype_alpha($c)) {
$ecv = ord($c) - ord(ctype_upper($c) ? 'A' : 'a'); //获取字符值(即0-25)
$ecv = ($ecv + $shift) % 26; //应用加密公式
$ecv += ord(ctype_upper($c) ? 'A' : 'a');
$newChar = chr($ecv); //从新值获取新字符(即A-Z)
$encryptedText .= $newChar; //附加加密字符
} else {
$encryptedText .= $c; //追加原始字符
}
}
return $encryptedText; //返回加密文本
}
//凯撒密码解密
public function caesardecrypt(Request $request)
{
$data = UtilService::postMore([
['content', 'www.ex60.com'],//解密内容
['pyl', 1],//偏移量
], $request);
$text = trim($data['content']);
$shift = $data['pyl'];
$decryptedText = ''; //用于存储加密文本的空字符串
foreach (str_split($text) as $c) { //遍历每个字符
if (ctype_alpha($c)) {
$ecv = ord($c) - ord(ctype_upper($c) ? 'A' : 'a');//获取字符值(即0-25)
$ecv = ($ecv - $shift) % 26; //应用加密公式
if ($ecv < 0) { // 处理余数为负的情况
$ecv += 26;
}
$ecv += ord(ctype_upper($c) ? 'A' : 'a');
$newChar = chr($ecv); //从新值获取新字符(即A-Z)
$decryptedText .= $newChar; //附加加密字符
} else {
$decryptedText .= $c; //追加原始字符
}
}
return $decryptedText;//返回加密文本
}