Stackoverflow拡張ライブラリには、& RSAで暗号化された文字列を暗号化するための2つの拡張機能があります。 Topic Here自分で数回使用しましたが、実際にはテストしていませんが、それはSO拡張ライブラリですので、テスト済みだとします。&安定しています。
暗号化;
public static string Encrypt(this string stringToEncrypt, string key)
{
if (string.IsNullOrEmpty(stringToEncrypt))
{
throw new ArgumentException("An empty string value cannot be encrypted.");
}
if (string.IsNullOrEmpty(key))
{
throw new ArgumentException("Cannot encrypt using an empty key. Please supply an encryption key.");
}
System.Security.Cryptography.CspParameters cspp = new System.Security.Cryptography.CspParameters();
cspp.KeyContainerName = key;
System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(cspp);
rsa.PersistKeyInCsp = true;
byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);
return BitConverter.ToString(bytes);
}
復号化;
public static string Decrypt(this string stringToDecrypt, string key)
{
string result = null;
if (string.IsNullOrEmpty(stringToDecrypt))
{
throw new ArgumentException("An empty string value cannot be encrypted.");
}
if (string.IsNullOrEmpty(key))
{
throw new ArgumentException("Cannot decrypt using an empty key. Please supply a decryption key.");
}
try
{
System.Security.Cryptography.CspParameters cspp = new System.Security.Cryptography.CspParameters();
cspp.KeyContainerName = key;
System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(cspp);
rsa.PersistKeyInCsp = true;
string[] decryptArray = stringToDecrypt.Split(new string[] { "-" }, StringSplitOptions.None);
byte[] decryptByteArray = Array.ConvertAll<string, byte>(decryptArray, (s => Convert.ToByte(byte.Parse(s, System.Globalization.NumberStyles.HexNumber))));
byte[] bytes = rsa.Decrypt(decryptByteArray, true);
result = System.Text.UTF8Encoding.UTF8.GetString(bytes);
}
finally
{
// no need for further processing
}
return result;
}
「私は地球上で最も強力で安全な暗号化方法は必要ありません」 - なぜ暗号化するのですか?強力な暗号化を使用せず、その情報に価値がある場合、誰かがそれを解読する可能性は非常に高いです。 – TrueWill
あなたはあなたの建物にどのようなセキュリティシステムを入れるかを尋ねているようですが、あなたは建物の中で何が貴重なものかを教えていません。銀行のセキュリティシステムは、大使館のセキュリティシステムとは非常に異なっています。何が脅かされているのかを知るまで、暗号アルゴリズムを推薦することはできません。問題で暗号化を行う前に、保護しているリソースと心配している脅威について説明してください。暗号化は適切な解決策ではないかもしれません。 ACLが適切なソリューション、またはその他のセキュリティ技術かもしれません。 –
また、暗号化を安全にするものが鍵のセキュリティであることを忘れないでください。 *どのように安全な鍵管理を行うつもりですか?*それは難しい問題です。比較のために既製の暗号化アルゴリズムを使用するのは簡単です。 –