sql >> データベース >  >> RDS >> Mysql

URLで送信される変数のハッシュまたは暗号化

    ほとんどの暗号化(またはハッシュなど)ルーチンの出力は任意のバイナリデータであり、エンコードせずにURLに安全に含めることはできません。

    卵のようなメモとしてurlencode()を使用するだけです データについては十分なはずです。ただし、標準のURLエンコードは、ランダムなバイナリデータをエンコードするための最もコンパクトな方法ではない場合があります。 Base64 エンコーディングの方が効率的ですが、+を使用しているため、残念ながら完全にURLセーフではありません。 キャラクター。

    幸い、 RFC 4648 「base64url」として。 PHPでこのエンコードを使用してデータをエンコードおよびデコードするための関数のペアを次に示します。「gutzmeratusadotnet」によるこの回答に基づく

    function base64url_encode($data) {
        return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
    }
    
    function base64url_decode($data) {
        return base64_decode(strtr($data, '-_', '+/'));
    }
    

    (少なくとも現在のバージョンのPHPは明らかに=を必要としないため、デコード機能を少し簡略化しました。 base64_decode()への入力の文字のパディング 。)

    追伸そもそもランダムトークンを安全に生成するために、例えばを参照してください。 この質問



    1. 長さが10未満の文字列を格納する場合、varchar(10)とvarchar(1000)に違いはありますか?

    2. 名前付きパイプとは何ですか?

    3. MySQLでパーセンタイルランクを計算する

    4. 非構造化コンテンツ:AIと機械学習のための未開発の燃料源