暗号化と復号化のコードを実装しました。メソッドを暗号化するために渡された入力文字列の値を取得し、xmlファイルに格納されている暗号化値を取得します。復号化メソッドを使用してxmlファイルを読み取って値を読み取るために暗号化された値を取得した後。まれにエラーが出ます(暗号化された入力値が正しくなく、復号化された出力値です)。どのように私はこの問題を解決するのですか?私に共有してください。ここで サンプルコードCで暗号化/復号化中に文字が失われました。#
public static string Decrypt(string cipherText)
{
try
{
string incoming = cipherText.Replace('_', '/').Replace('-', '+');
switch (cipherText.Length % 4)
{
case 2: incoming += "=="; break;
case 3: incoming += "="; break;
}
byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
byte[] cipherTextBytes = Convert.FromBase64String(incoming);
PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null);
byte[] keyBytes = password.GetBytes(keysize/8);
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.Mode = CipherMode.CBC;
ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
MemoryStream memoryStream = new MemoryStream(cipherTextBytes);
CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
memoryStream.Close();
cryptoStream.Close();
return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
}
catch (Exception ex)
{
return "Exception";
}
}
変更ASCIIエンコーディング。印刷可能でない文字を取り除くAsciiエンコーディング私は時々、暗号化がAsciiエンコーディングが削除している文字を生成していると思われます。 – jdweng