我使用base64进行加密和解密。
但是对于某些值,加密数据没有正确解密并添加特殊字符。 使用当前密钥,单词'skype'没有正确加密和解密,而是在解密时出现特殊字符。
任何人都可以告诉我,问题是什么? (代码在Google上很简单,但我查了博客和论坛,找不到任何与此问题相关的东西,这意味着问题在我的代码中)
<?php
$id= $_GET['id'];
$encrypted = encrypt($id, "check");
echo $encrypted ;
function encrypt($string, $key)
{
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
?>
<?php
$id= $_GET['id'];
$decrypted = decrypt($id, "check");
echo $decrypted ;
function decrypt($string, $key)
{
$result = '';
$string = base64_decode($string);
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
?>
答案 0 :(得分:4)
基本上...