如何使用XML加密语法和处理规范解密存储在XML中的数据

本文关键字:XML 存储 解密 数据 范解密 语法 加密 何使用 处理 | 更新日期: 2023-09-27 17:58:59

在知道密码的情况下,如何使用C#解密此XML文件?

<EncryptedData xmlns="w3.org/2001/04/xmlenc#"; Type="w3.org/2001/04/xmlenc#Element"; Salt="Gnk/DB61AQ==" IV="iYcfV0NOGy0="> 
<EncryptionMethod Algorithm="w3.org/2001/04/xmlenc#tripledes-cbc"; /> 
<CipherData>
 <CipherValue>/TtgJ46P9L23ZeGt67n+2OZGXoHiGWcUAWE8CdN1Z2aiF40fAg6DfBWGx62RB7Botxr‌​w+f1Jf1CtR10iMLw0iz+VIcbaPFZj5ZfCm3aDeDLbnwXdb7mIdzNtF/5EOjNph/kPz7PxcUlAOUvsLLmj‌​Gtx92EhWL6KpXufKahnRiwLuZLNc</CipherValue>
</CipherData>
</EncryptedData>

我试过

public static string Decryption(string CypherText, string key) 
{
    byte[] b = Convert.FromBase64String(CypherText); 
    TripleDES des = CreateDES(key);
    ICryptoTransform ct = des.CreateDecryptor();
    byte[] output = ct.TransformFinalBlock(b, 0, b.Length); 
    return Encoding.Unicode.GetString(output); 
} 

但出现异常

byte[]output=ct.TransformFinalBlock(b,0,b.Length);错误数据

如何使用XML加密语法和处理规范解密存储在XML中的数据

http://www.deltasblog.co.uk/code-snippets/basic-encryptiondecryption-c/

  byte[] inputArray = Convert.FromBase64String(input);
          TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
          tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
          tripleDES.Mode = CipherMode.ECB;
          tripleDES.Padding = PaddingMode.PKCS7;
          ICryptoTransform cTransform = tripleDES.CreateDecryptor();
          byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
          tripleDES.Clear();
          return UTF8Encoding.UTF8.GetString(resultArray);