0

这是我在 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(我在加密密钥的末尾添加了额外的一个字母)。

如果我解密它并检查到期日期,它也可以工作。如果有额外的字母,我应该抛出错误消息。

请给我建议。

4

0 回答 0