代码之家  ›  专栏  ›  技术社区  ›  coffeemonitor

使用base64_encode()进行文本模糊处理

  •  0
  • coffeemonitor  · 技术社区  · 14 年前

    我在用PHP进行加密/解密编码。有趣的东西!
    但是,我遇到了一些涉及到什么文本被加密的问题。

    下面是两个加密和解密字符串的函数。它使用一个加密密钥,我将其设置为一些模糊的东西。 我实际上是从一本PHP书中得到的。我稍微修改了一下,但并没有改变它的主要目标。

    我在下面创建了一个任何人都可以测试的小例子。
    但是,我注意到有些字符显示为“加密”字符串。像“=”和“+”这样的字符。 有时我通过URL传递这个加密字符串。这可能不太符合我的接收脚本。我猜如果看到某些字符,浏览器会对字符串做些什么。我只是在猜测。

    是否还有其他功能可用于确保浏览器不接触字符串?或者有人知道足够的php bas64_encode()来禁止使用某些字符吗?我真的不希望后者成为可能。但是,我肯定有工作要做。

    享受代码吧,任何人都需要它!

    define('ENCRYPTION_KEY', "sjjx6a"); 
    
    function encrypt($string) {
    
      $result = '';
      for($i=0; $i<strlen($string); $i++) {
        $char = substr($string, $i, 1);
        $keychar = substr(ENCRYPTION_KEY, ($i % strlen(ENCRYPTION_KEY))-1, 1);
        $char = chr(ord($char)+ord($keychar));
        $result.=$char;
      }
      return base64_encode($result)."/".rand();
    }
    
    function decrypt($string){
        $exploded = explode("/",$string);
        $string = $exploded[0];
      $result = '';
      $string = base64_decode($string);
      for($i=0; $i<strlen($string); $i++) {
        $char = substr($string, $i, 1);
        $keychar = substr(ENCRYPTION_KEY, ($i % strlen(ENCRYPTION_KEY))-1, 1);
        $char = chr(ord($char)-ord($keychar));
        $result.=$char;
      }
    
      return $result;
    }
    
    echo $encrypted = encrypt("reaplussign.jpg");
    echo "<br>";
    echo decrypt($encrypted);
    
    3 回复  |  直到 14 年前
        1
  •  3
  •   anonymous    14 年前

    你可以用PHP urlencode urldecode 使加密结果在URL中安全使用的函数,例如

    echo $encrypted = urlencode(encrypt("reaplussign.jpg"));
    echo "<br>";
    echo decrypt(urldecode($encrypted));
    
        2
  •  0
  •   anorm    14 年前

    你应该看看 urlencode() 以正确转义字符串以便在查询中使用。

        3
  •  0
  •   eyescream    14 年前

    如果你担心+、=等类似的字符,你应该看看 http://php.net/manual/en/function.urlencode.php 它是来自“另见”部分的朋友。在encrypt()中对其进行编码,并在decrypt()的开头进行解码。

    如果这对你不起作用,也许简单的替代品?

    $text = str_replace('+','%20',$text);