0

日時をバイト単位に変換するトークンを生成します。トークンを生成する方法は次のとおりです。

public string generateToken()
    {
        byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
        byte[] key = new Guid().ToByteArray();
        string token = Convert.ToBase64String(time.Concat(key).ToArray());
        return token;
    }

これは、トークンが生成されるときの様子です。

chas42Sbo9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

しかし、特殊文字を生成する日もあります。この例のように:

chs2BiT/z0gああああああああああああああああ

リンクの結果を解析して、別のページにリダイレクトします

http://test.com/abo.aspx?chas42Sbo9AAAAAAAAAAAAAAAAAAAAA

特殊文字を使用すると、次のようになります。

http://test.com/abo.aspx?chs2BiT/z0gAAAAAAAAAAAAAAAAAAAAA

これは機能しません。

特殊文字なしでトークンを生成することは可能ですか?

4

1 に答える 1

1

は次のようBase64に定義されます。

base-64 の数字は、0 から昇順で大文字の "A" から "Z"、小文字の "a" から "z"、数字の "0" から "9"、および記号の "+" と"/"。値のない文字「=」は、末尾のパディングに使用されます。

そのため、トークンに文字を表示さConvert.ToBase64Stringせたくない場合は使用できません。/

于 2013-04-04T08:58:54.333 に答える