18

インターネット経由で約 30 文字の文字列を送信する必要がありますが、これはおそらく別の会社のデータベースの ID になります。

文字列自体は識別されませんが、認識できないようにしたいと思います。

.NET でこのような文字列を難読化し、必要に応じて簡単に元に戻すことができるようにする最も簡単な方法は何ですか?

4

4 に答える 4

26

古典的なもの(現代風にアレンジしたもの)はどうですか。

public static string Caesar(this string source, Int16 shift)
{
    var maxChar = Convert.ToInt32(char.MaxValue);
    var minChar = Convert.ToInt32(char.MinValue);

    var buffer = source.ToCharArray();

    for (var i = 0; i < buffer.Length; i++)
    {
        var shifted = Convert.ToInt32(buffer[i]) + shift;

        if (shifted > maxChar)
        {
            shifted -= maxChar;
        }
        else if (shifted < minChar)
        {
            shifted += maxChar;
        }

        buffer[i] = Convert.ToChar(shifted);
    }

    return new string(buffer);
}

明らかにあなたはこのように使用します

var plain = "Wibble";
var caesered = plain.Caesar(42);
var newPlain = caesered.Caesar(-42);

その迅速な、あなたの鍵はただの、Int16そしてそれはカジュアルなオブザーバーが値をコピーして貼り付けることを防ぎますが、それは安全ではありません。

于 2012-10-23T08:44:29.517 に答える
10

どうですか:

    Convert.ToBase64String(Encoding.UTF8.GetBytes(myString));

とその逆:

    Encoding.UTF8.GetString(Convert.FromBase64String(myObfuscatedString));

弦の長さを長くしてもかまわない限り

于 2012-10-23T08:27:27.373 に答える
5

たとえばAESで暗号化してみてください。他のマシンの暗号化キーがわかっている場合は、そこで簡単に復号化できます

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aes(v=vs.100).aspx

周りには多くのコードサンプルがあります。たとえば、128ビットしかないにもかかわらず、クイック検索でこの投稿を見つけました。うまくいくはずです

C# での AES 暗号化の使用

于 2012-10-23T08:06:49.607 に答える