这是我在 php 中使用加密和解密的方法。
function ecrypt($str){
$key = "ABCDEH";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
function decrypt($str){
$str = base64_decode($str);
$result = '';
$key = "ABCDEH";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
加密文本可能包含名称和到期日期。如果我的加密文本是:
1yUoaCToqmsqq+4unuFdXWJc4R5hnmL
我将解密并计算到期日期,但问题是用户是否输入1yUoaCToqmsqq+4unuFdXWJc4R5hnmLL
(我在加密密钥的末尾添加了额外的一个字母)。
如果我解密它并检查到期日期,它也可以工作。如果有额外的字母,我应该抛出错误消息。
请给我建议。