インターネット経由で約 30 文字の文字列を送信する必要がありますが、これはおそらく別の会社のデータベースの ID になります。
文字列自体は識別されませんが、認識できないようにしたいと思います。
.NET でこのような文字列を難読化し、必要に応じて簡単に元に戻すことができるようにする最も簡単な方法は何ですか?
インターネット経由で約 30 文字の文字列を送信する必要がありますが、これはおそらく別の会社のデータベースの ID になります。
文字列自体は識別されませんが、認識できないようにしたいと思います。
.NET でこのような文字列を難読化し、必要に応じて簡単に元に戻すことができるようにする最も簡単な方法は何ですか?
古典的なもの(現代風にアレンジしたもの)はどうですか。
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
そしてそれはカジュアルなオブザーバーが値をコピーして貼り付けることを防ぎますが、それは安全ではありません。
どうですか:
Convert.ToBase64String(Encoding.UTF8.GetBytes(myString));
とその逆:
Encoding.UTF8.GetString(Convert.FromBase64String(myObfuscatedString));
弦の長さを長くしてもかまわない限り
たとえばAESで暗号化してみてください。他のマシンの暗号化キーがわかっている場合は、そこで簡単に復号化できます
http://msdn.microsoft.com/en-us/library/system.security.cryptography.aes(v=vs.100).aspx
周りには多くのコードサンプルがあります。たとえば、128ビットしかないにもかかわらず、クイック検索でこの投稿を見つけました。うまくいくはずです