0

暗号化された文字列を作成する場合:

 using(var cryptoProvider = new DESCryptoServiceProvider())
    {
      cryptoProvider.Key = Convert.FromBase64String(Key);
      cryptoProvider.IV = Convert.FromBase64String(Key);

      var encryptedString = cryptoProvider
        .CreateEncryptor()
        .TransformFinalBlock(serializedBytes, 0, serializedBytes.Length);

      return Convert.ToBase64String(encryptedString);

特定の文字を使用しないようにする方法はありますか? 実際に問題を引き起こしている文字は「+」記号です。この問題は、asp.net がデコードし、(たとえば) + 記号がスペースに変換されたときに明らかになります。

同じ問題に陥る他の文字があるかもしれませんが、問題として遭遇したのは + 記号だけのようです。暗号化で特定の文字を使用しないようにする方法、または暗号化ロジックでこれを防ぐ方法はありますか?

4

3 に答える 3

1

いいえ、ただし、結果の文字列を呼び出すことはできUrl.Encode()ます。

于 2012-09-17T15:12:04.503 に答える
1

これは、暗号化や DES とはまったく関係ありません。

これらの文字を生成するのは Base64 です。英数字の ASCII 文字は 62 文字しかないため、完全な 64 文字を取得するにはあと 2 文字+必要/です=

+必要に応じてと/を他の文字に置き換えstring.Replaceたり、出力で url エンコーディングを使用したりできます。

于 2012-09-17T15:12:43.567 に答える
0

したがって、暗号化された値がURLで使用される私の特定のケースでは、前述のURLエンコーディング/デコーディング管理の悪夢を回避するために、

HttpUtilityServer.UrlTokenEncode / UrlTokenDecode

To64BaseString() で使用される、パディングされた Ascii 値で発生するすべての問題を処理します。

于 2012-09-17T17:47:07.133 に答える