如何使用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+2OZGXoHiGWcUAWE8CdN1Z2aiF40fAg6DfBWGx62RB7Botxrw+f1Jf1CtR10iMLw0iz+VIcbaPFZj5ZfCm3aDeDLbnwXdb7mIdzNtF/5EOjNph/kPz7PxcUlAOUvsLLmjGtx92EhWL6KpXufKahnRiwLuZLNc</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);错误数据
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);