C# RFC2898DeriveBytes未解密

C# RFC2898DeriveBytes未解密,c#,encryption,rfc2898,C#,Encryption,Rfc2898,我在使用RFC2898DeriveBytes时遇到一些问题。情况是这样的:我正在使用rsacyptoprovider创建一个公钥/私钥对,并使用Rfc2898加密私钥文件。我使用以下代码进行加密: Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(frm2.txtPassphrase.Text, saltbyte); // Encrypt the data. TripleDES encAlg = TripleDES.Create(); en

我在使用RFC2898DeriveBytes时遇到一些问题。情况是这样的:我正在使用rsacyptoprovider创建一个公钥/私钥对,并使用Rfc2898加密私钥文件。我使用以下代码进行加密:

 Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(frm2.txtPassphrase.Text, saltbyte);

 // Encrypt the data.
 TripleDES encAlg = TripleDES.Create();
 encAlg.Key = key.GetBytes(16);

 // Create the streams used for encryption. 
 byte[] encrypted;
 using (FileStream fsEncrypt = new FileStream(@"D:\test.xml", FileMode.Create, System.IO.FileAccess.Write))
 {
     using (CryptoStream csEncrypt = new CryptoStream(fsEncrypt, encAlg.CreateEncryptor(), CryptoStreamMode.Write))
     {
          using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
          {
               //Write all data to the stream.
               swEncrypt.Write(privateKeyXml);
          }
      }
 }
这是用于解密的:

TripleDES decAlg = TripleDES.Create();
Rfc2898DeriveBytes key1 = new Rfc2898DeriveBytes(frm1.txtPassphrase.Text, saltbyte);
decAlg.Key = key1.GetBytes(16);

// Create the streams used for decryption. 
using (FileStream fsDecrypt = new FileStream(@"D:\test.xml", FileMode.Open, System.IO.FileAccess.Read))
{
    using (CryptoStream csDecrypt = new CryptoStream(fsDecrypt, decAlg.CreateDecryptor(), CryptoStreamMode.Read))
    {
        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
        {

             // Read the decrypted bytes from the decrypting stream 
             // and place them in a string.
             decPrivateKeyXml = srDecrypt.ReadToEnd();
         }
     }
}
现在的问题是,当我得到dePrivateKeyXML时,除了前几个单词之外,所有的单词都是正确的。前几个字只是乱拼了一下:

"�� ���dalue><Modulus>u9N+amIgXTw1zzJ+bxXoKaaGwCVFeXkKvdx0vhd24X7vvcJpnkA6gFgOeypbTTGm3if1QM/lyLN3qoprBkHJKDo7ldzj5a4L2Xb1tP1yUyNDban/KzkzsGK0h3fLO8UxRE6cHIB5cyEUmgmkjpFoXzz7DovUrZh3Z3qV20AHZLs=</Modulus><Exponent>AQAB</Exponent><P>5pCr4yPtn8ZyZskIpFM9pgZI1BUBIJYYhnYPywrMTj1smsQGuCswXNrcKsGvF6c9KrrXFF69AgbzcAsQwI449Q==</P><Q>0IvXoP8uELT/v8lG5R0YmvrgTfVQNJp8n8PT7J1dN3dsCDUHa+rK2Q4XSehFHT8XQgiENICkYg6xsdJqXXxY7w==</Q><DP>KwpSrAIm966J6JoanOJVHcsKiVyqazTZuzAK3rJTVT+uKG3zeynEy3CnrOufDeFQT8u1Hr5YtioqA35tUCS8iQ==</DP><DQ>UXZOxJTpaZ1KSaBWESlMcz2MYOdybRnrlHzqS4Ms5n2/tXUBcSZGFoNqlXQli0cZzrGE8v1NOQCEaPHImrv4AQ==</DQ><InverseQ>rX3TlQMreZvjm+fNS5UK90tj/KQQAlP0u5xxgEAUVfr8ZE/hsSOcB0MuXPyeGExRyRiBdSUsj64BHOVPH9+mcw==</InverseQ><D>H04JtNtz/3YolccZsZQaJM7/iIjtwmg9NRXIU2J/yueoN51ukxSra3bBux99JimPYVmRk+LSrpfS6xa07c8LIqMaC6nFQCVF6yJH3sHuDuL7Hob2dVZ+egyjeCVu8vyn1R4/SAZ4AaWtmc8c0Zt3hSvdDMCtN61HWegFmugvRkk=</D></RSAKeyValue>"
”�� ���在研究过程中,我们发现了一个以上的数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字+一个数字N8PT7J1DN3DSCDUHA+rK2Q4XSehFHT8XQgiENICk2)2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 yueoN51ukxSra3bBux99JimPYVmRk+LSrpfS6xa07c8LIqMaC6nFQCVF6yJH3sHuDuL7Hob2dVZ+egyjeCVu8vyn1R4/SAZ4AAWTMC8C0ZT3HSVDMCTN61HWEGFMUGVRKK=”

我不知道代码有什么问题……

.NET使用随机IV进行CBC加密。你需要用密文存储这个IV,并用它初始化解密程序。通常,IV以密文为前缀。

.NET使用随机IV进行CBC加密。你需要用密文存储这个IV,并用它初始化解密程序。通常在密文前面加上IV