私は独自のリスト マネージャーを作成しており、ユーザーが "ワンクリック" で購読を解除できるようにするための簡単な短い URL が必要です (例: http://unsubscribe.example.com/50d178fa )。
50d178fa
は単なる 16 進数のエポックであり、私が考えるのが好きすぎる推測です。1 つは悪意のあるもので、一定期間 16 進数を正しく推測することで人々の登録を解除する可能性があります。
だから私はいくつかの光の保護を探しています。xor
最も単純なようです。欠落している可能性のある8文字を超えない「推測できない文字列」を生成するシークレットを使用した、他の「サックレス」の提案はありますか?
epoch=$(date +%s)
hex=$(printf '%x' $epoch)
echo Convert epoch to hex
echo d:$epoch h:$hex
echo h:$hex is ${#hex} characters long
echo Conversion from hex back to epoch
echo h:$hex d:$(printf "%dn" 0x$hex)
n=911 # secret number
obfuscated=$(($epoch ^ $n))
obfuscatedhex=$(printf '%x' $obfuscated)
echo d:$obfuscated, h:$obfuscatedhex is ${#obfuscatedhex} characters long
echo Conversion from hex back to epoch
echo $(($(printf "%dn" 0x$obfuscatedhex) ^ $n))