日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xml文件加密和解密

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xml文件加密和解密 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • XML介紹
  • Extensible Markup Language(XML),可擴(kuò)展標(biāo)記語言,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。

    XML文件特征如下:

    a)?XML第一行是聲明,?格式如下:<?xml?>?? <?xml version=“1.0” encoding=“utf-8”?>

    b)?XML必須有根元素:?? 個文件只能有一個根元素, 含開始和結(jié)束

    c)?XML大小寫敏感

    d) XML文件的嵌套元素,含有父元素和子元素

    e) XML元素的屬性必須用引號。

    一個典型的XML文件如下:

    <?xml version="1.0" encoding="UTF-8"?>-<root>-<creditcard><number>19834209</number><expiry>02/02/2002</expiry></creditcard></root> XML HTML的區(qū)別:?同屬標(biāo)記語言, XML起保存、傳輸數(shù)據(jù)作用; HTML網(wǎng)頁語言, 起顯示作用。

    2. 加密、解密算法介紹

    常用的加密算法主要有兩大類,一類是數(shù)據(jù)校驗(yàn)型,另一類是數(shù)據(jù)轉(zhuǎn)移型。數(shù)據(jù)校驗(yàn)型主要加密算法有:MD5、SHA-1。數(shù)據(jù)轉(zhuǎn)移型型主要加密算法有:AES和RSA。

    對于MD5和SHA-1型加密算法,主要是使用了哈希算法(Hash algorithm),哈希算法是將任意長度的輸入變成固定長度(32位、64位、128位等)輸出的算法 (哈希/散列),是一種不可逆算法。如下圖

    AES(Advanced Encryption Standard, 高級對稱加密算法)和RSA: 3 MIT researchers (Ron Rivest, Adi Shamir, Leonard Adleman) 非對稱加密算法。是一種可逆算法。兩者主要區(qū)別是對于對稱加密算法,其公鑰和私鑰是同一個密鑰,而對于非對稱加密算法,其公鑰和私鑰不是同一個密鑰。

    3. 對稱加密算法(AES)

    加密算法:

    public static void Encrypt(XmlDocument Doc, string ElementName, SymmetricAlgorithm Key){// check the arguments.if (Doc == null){throw new ArgumentNullException("Doc");}if (ElementName == null){throw new ArgumentNullException("ElementToEncrypt");}if (Key == null){throw new ArgumentNullException("Alg");}// find the specified element in the XmlDocument// object and create a new XmlElement objectXmlElement elementToEncrypt = Doc.GetElementsByTagName(ElementName)[0] as XmlElement;// throw an XmlException if the element was not found.if (elementToEncrypt == null){throw new XmlException("The specified element was not found");}EncryptedXml eXml = new EncryptedXml();byte[] encryptedElement = eXml.EncryptData(elementToEncrypt, Key, false);EncryptedData edElement = new EncryptedData();edElement.Type = EncryptedXml.XmlEncElementUrl;string encryptionMethod = null;if (Key is TripleDES){encryptionMethod = EncryptedXml.XmlEncTripleDESUrl;}else if (Key is DES){encryptionMethod = EncryptedXml.XmlEncDESUrl;}if (Key is Rijndael){switch (Key.KeySize){case 128:encryptionMethod = EncryptedXml.XmlEncAES128Url;break;case 192:encryptionMethod = EncryptedXml.XmlEncAES192Url;break;case 256:encryptionMethod = EncryptedXml.XmlEncAES256Url;break;}}else{throw new CryptographicException("The specified algorithm is not supported for XML Encryption.");}edElement.EncryptionMethod = new EncryptionMethod(encryptionMethod);edElement.CipherData.CipherValue = encryptedElement;EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false);}

    解密算法:

    public static void Decrypt(XmlDocument Doc, SymmetricAlgorithm Alg){if (Doc == null)throw new ArgumentNullException("Doc");if (Alg == null)throw new ArgumentNullException("Alg");XmlElement encryptedElement = Doc.GetElementsByTagName("EncryptedData")[0] as XmlElement;if (encryptedElement == null){throw new XmlException("The EncryptedData element was not found.");}EncryptedData edElement = new EncryptedData();edElement.LoadXml(encryptedElement);EncryptedXml exml = new EncryptedXml();byte[] rgbOutput = exml.DecryptData(edElement, Alg);exml.ReplaceData(encryptedElement, rgbOutput);}

    圖一的XML文件加密后的XML如下:

    <?xml version="1.0" encoding="UTF-8"?>-<root>-<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"><EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>-<CipherData><CipherValue>+X2fHiwxzCKbqu1TKXth5m7MsY2dCuCFut0YIRwk/kJ+UQmWmNaRV5TM9gJ7BpJC6vWG9z/Dv7q6CN1S9ko2PF70XNRqAX8KLsYUlUGORvXrSOYJu3vP0pVpJWDiP02/mXB9Cnd2QAjtiHjvT4RnqQ==</CipherValue></CipherData></EncryptedData></root>

    ?

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的xml文件加密和解密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。