我使用AesCryptoServiceProvider到加密某些文件配置时遇到错误。 摘要代码如下
private static byte[] secretKey = {
(byte)0x63, (byte)0x23, (byte)0xdf, (byte)0x2a,
(byte)0x59, (byte)0x1a, (byte)0xac, (byte)0xcc,
(byte)0x50, (byte)0xfa, (byte)0x0d, (byte)0xcc,
(byte)0xff, (byte)0xfd, (byte)0xda, (byte)0xf0
};
private static byte[] iv = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
public static byte[] EncryptStringToBytes(String plainText, byte[] secretKey, byte[] IV)
{
try
{
// Check arguments.
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (secretKey == null || secretKey.Length <= 0)
throw new ArgumentNullException("secretKey");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("secretKey");
byte[] encrypted;
// Create an AesCryptoServiceProvider object
// with the specified key and IV.
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
{
aesAlg.Key = secretKey;
aesAlg.IV = IV;
// Create a decrytor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
catch (System.Exception ex)
{
LogWriter.Instance.LogError(ClassName, "EncryptStringToBytes()", ex.Message + ";\tplainText=" + plainText + ";\t" + ex.StackTrace);
return null;
}
}
int main()
{
byte[] encryptText = EncryptStringToBytes("some plain text", secretKey, iv);
if (encryptText != null)
{
try
{
File.WriteAllBytes(filePath, encryptText);
}
catch (Exception ex)
{
LogWriter.Instance.LogError(ClassName, "SaveBuffToFile()", ex.Message + ";\tFilePath=" + path + ";\t" + ex.StackTrace);
}
}
}
在主函数中,我加密纯文本,并通过调用结果保存到文件File.WriteAllBytes(filePath, encryptText);
。 但有时内容文件中包含的所有空字符(“\ 0”)。 波纹图像文件的内容时,我HexaEditor打开
一个月这个错误发生约一次运行每天8小时的应用程序。
我认为,该文件可能已损坏。 但我认为,这种情况下不被损坏引起的,因为有一个文件夹中的10个配置文件,但只有7个文件,使用加密遇到这个错误,而通过纯文本(不使用加密)保存3个文件从未遇到此错误。
因此,我认为造成AesCryptoServiceProvider的问题。 任何人都请帮助我。
谢谢!