http://www.xxx.tld/?user=K5idDC
http://www.xxx.tld/?user=2RK4dm
http://www.xxx.tld/?user=3wemcF
http:// www.xxx.tld/?user=492mF3。 。 。 。 。 。
たとえば、上記のユーザー パラメーターの値はすべて、同じユーザー名 (ABCD) の情報ページを指します。これにより、1 つのユーザー名が数千の暗号化された文字に対応することを実現できます。可逆機能がない場合は対応関係をデータベースに保存する必要があるので面倒です。
要件は次のとおりです:
1. リフレッシュは可変であり、元に戻すことができます。
2. 暗号化されたコンテンツとほぼ同じ長さである必要があります。
そのような機能があるかどうかわかりません。誰か知っていますか?シェアしてください、ありがとう!
インターネットで検索した DZ 関数の暗号文は長すぎるため、URL として使用するには適していません
for($i=0; $i<10; $i++) { echo $m = encode('ABCD'); echo ' : ' . decode($m) . PHP_EOL;}function encode($s) { $d = array_map('chr', range(0x21, 0x7e)); $len = count($d); $t = rand(0, $len); $r = $d[$t]; for($i=0; $i<strlen($s); $i++) { $r .= $d[(ord($s{$i}) - 0x21 + $t) % $len]; } return $r;}function decode($s) { $d = array_map('chr', range(0x21, 0x7e)); $len = count($d); $r = ''; $t = array_search($s{0}, $d); for($i=1; $i<strlen($s); $i++) { $r .= $d[(ord($s{$i}) - 0x21 +($len - $t)) % $len]; } return $r;}
for($i=0; $i<10; $i++) { echo $m = encode('ABCD'); echo ' : ' . decode($m) . PHP_EOL;}function encode($s) { $d = array_map('chr', range(0x21, 0x7e)); $len = count($d); $t = rand(0, $len); $r = $d[$t]; for($i=0; $i<strlen($s); $i++) { $r .= $d[(ord($s{$i}) - 0x21 + $t) % $len]; } return $r;}function decode($s) { $d = array_map('chr', range(0x21, 0x7e)); $len = count($d); $r = ''; $t = array_search($s{0}, $d); for($i=1; $i<strlen($s); $i++) { $r .= $d[(ord($s{$i}) - 0x21 +($len - $t)) % $len]; } return $r;}
ABC 3STUV D
)IJKL : ABCD
)IJKL : ABCD
Ddefg : ABCD
Zz{|} : ABCD
@`abc : ABCD
o1234 : ABCD
j,-./ : ABCD
3STUV : ABCD
数字の中に & が表示される可能性が高くなります。特殊文字を表示しないようにする方法はありますか?
関数内の配列 $d は、表示できるすべての文字のリストです。私の例は、印刷可能なすべての ASCII 文字 (スペースを除く) です。
必要に応じてサイズを調整できます
コード
/*//生成随机字典$d = str_split('0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');shuffle($d);echo join('', $d) . PHP_EOL;*/define('DICT', 'hpkE6F0VWb8Cc3Ha_t4OMYl5xPy9ojuRA1dqKBQIJvrLiGsZeNgTm7wzfXDSU2n');for($i=0; $i<10; $i++) { echo $m = encode('ABCD'); echo ' : ' . decode($m) . PHP_EOL;}function encode($s) { $d = str_split(DICT); $len = count($d); $t = rand(0, $len); $r = $d[$t]; for($i=0; $i<strlen($s); $i++) { $r .= $d[(array_search($s{$i}, $d) + $t) % $len]; } return $r;}
ciN5V : ABCD
6Kvan : ABCD
4gzj3 : ABCD
un6vP : ABCD
mYyhZ : ABCD
Z_YDr : ABCD
F Br_h : ABCD
コードを調整しますOTfuH : ABCD
ciN5V : ABCD
6Kvan : ABCD
4gzj3 : ABCD
un6vP : ABCD
So1Vw : ABCD
mYyhZ : ABCD
Z_YDr : ABCD
FBr_h : ABCD
ありがとうございます!これが欲しいのですが、対応するデコードは何ですか?
/*//生成随机字典$d = str_split('0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');shuffle($d);echo join('', $d) . PHP_EOL;*/define('DICT', 'hpkE6F0VWb8Cc3Ha_t4OMYl5xPy9ojuRA1dqKBQIJvrLiGsZeNgTm7wzfXDSU2n');for($i=0; $i<10; $i++) { echo $m = encode('ABCD'); echo ' : ' . decode($m) . PHP_EOL;}function encode($s) { $d = str_split(DICT); $len = count($d); $t = rand(0, $len); $r = $d[$t]; for($i=0; $i<strlen($s); $i++) { $r .= $d[(array_search($s{$i}, $d) + $t) % $len]; } return $r;}
ああ、投稿を見逃しました
function decode($s) { $d = str_split(DICT); $len = count($d); $r = ''; $t = array_search($s{0}, $d); for($i=1; $i<strlen($s); $i++) { $r .= $d[(array_search($s{$i}, $d) + ($len - $t)) % $len]; } return $r;}
9SpQl : ABCD
yDhBY : ABCD
function decode($s) { $d = str_split(DICT); $len = count($d); $r = ''; $t = array_search($s{0}, $d); for($i=1; $i<strlen($s); $i++) { $r .= $d[(array_search($s{$i}, $d) + ($len - $t)) % $len]; } return $r;}
ああ、見逃しました
function get_encode($s){ $en_s = encode($s); if($en_s == $s) { return get_encode($s); }else { return $en_s; }}
9SpQl : ABCD
噢,贴漏了
function decode($s) { $d = str_split(DICT); $len = count($d); $r = ''; $t = array_search($s{0}, $d); for($i=1; $i<strlen($s); $i++) { $r .= $d[(array_search($s{$i}, $d) + ($len - $t)) % $len]; } return $r;}