開発マシンで正常に機能する値を復号化するために使用しているこの関数があります。しかし、別のサーバーで本番環境で実行すると、次の正確なエラー メッセージが表示されます。
システムは、指定されたファイルを見つけることができません。
関数は次のとおりです。
public static string Decrypt(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;
}
アップデート
みんな、私はもともとこのルートに行きました。何時間も検索した後、スタックオーバーフローで答えを得たからです。暗号化/復号化のこの方法は文字列に対してのみ機能し、キーをインポート/エクスポートする必要はありません。
それで....今、キーファイルがありませんか?キーファイルを作成していませんでした。