Heim  >  Artikel  >  Backend-Entwicklung  >  有没有大神——求可逆的动态加密函数(2-WAY PHP版本)解决办法

有没有大神——求可逆的动态加密函数(2-WAY PHP版本)解决办法

WBOY
WBOYOriginal
2016-06-13 12:05:20869Durchsuche

有没有大神——求可逆的动态加密函数(2-WAY PHP版本)
http://www.xxx.tld/?user=K5idDC
http://www.xxx.tld/?user=2RK4dm
http://www.xxx.tld/?user=3wemcF
http://www.xxx.tld/?user=492mF3。。。。。。

比如以上user参数的值都指向同一用户名(ABCD)的资料页,有动态可逆的函数这样可以实现一个用户名对应上千个加密字符,如果没有可逆函数,需用数据库保存对应关系的话,那很麻烦!

要求如下:
1、刷新一次可变一次,并且可逆;
2、要和被加密内容差不多长短;

不知道有这样的函数吗?有大神知道吗?麻烦分享一下,谢谢!

网上搜索的DZ函数加密后密文太长了,不合适用作URL
------解决方案--------------------

for($i=0; $i<10; $i++) {<br />  echo $m = encode('ABCD');<br />  echo ' : ' . decode($m) . PHP_EOL;<br />}<br /><br />function encode($s) {<br />  $d = array_map('chr', range(0x21, 0x7e));<br />  $len = count($d);<br />  $t = rand(0, $len);<br />  $r = $d[$t];<br />  for($i=0; $i<strlen($s); $i++) {<br />    $r .= $d[(ord($s{$i}) - 0x21 + $t) % $len];<br />  }<br />  return $r;<br />}<br /><br />function decode($s) {<br />  $d = array_map('chr', range(0x21, 0x7e));<br />  $len = count($d);<br />  $r = '';<br />  $t = array_search($s{0}, $d);<br />  for($i=1; $i<strlen($s); $i++) {<br />    $r .= $d[(ord($s{$i}) - 0x21 +($len - $t)) % $len];<br />  }<br />  return $r;<br />}<br />
Iijkl : ABCD
3STUV : ABCD
)IJKL : ABCD
)IJKL : ABCD
Ddefg : ABCD
Zz{
------解决方案--------------------
} : ABCD
@`abc : ABCD
o1234 : ABCD
j,-./ : ABCD
3STUV : ABCD

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn