xml加密

一、对于xml文件或java源码(或其他文件)中需要保密的数据(如帐户密码等)可采用多种加密算法加密。目前的加密算法很多:DES(数字加密标准)是始于1977年的一种对等加密算法。

DES算法描述:

        DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data 、Mode。其中Key为8个字节共64位,是DES算法的工作密钥(公钥);Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

  DES算法工作流程如下:若Mode为加密模式,则利用Key 对数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密模式,则利用Key对密码形式的数据Data进行解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据在公共通信网中传输的安全性和可靠性。

二、XML 加密为需要结构化数据安全交换的应用程序提供了一种端到端安全性。XML 本身是对数据进行结构化最流行的技术。传输层安全性(Transport Layer Security(TLS))是因特网上安全通信的事实标准。TLS 是继著名的安全套接字层(SSL)之后的端到端安全性协议。它提供了通信双方之间的端到端安全性会话。XML 加密(XML Encryption)无意替换或取代 SSL/TLS。相反,它提供了用于 SSL 未涵盖的安全性需求的机制。以下是两个 SSL 未涉及的重要领域:

  • 加密交换数据的一部分
  • 多方(不止两方)之间的安全会话

可以对xml整个文件或单个元素或非xml数据进行加密,以下是非加密xml文件和对单个元素的加密后的xml文件示例:

加密前:

<purchaseOrder>
<Order>
<Item>book</Item>
<Id>123-958-74598</Id>
<Quantity>12</Quantity>
</Order>
<Payment>
<CardId>123654-8988889-9996874</CardId>
<CardName>visa</CardName>
<ValidDate>12-10-2004</ValidDate>
</Payment>
</purchaseOrder>

加密后:

<?xml version='1.0' ?>
<PurchaseOrder>
<Order>
<Item>book</Item>
<Id>123-958-74598</Id>
<Quantity>12</Quantity>
</Order>
<EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element'
     xmlns='http://www.w3.org/2001/04/xmlenc#'>
<CipherData>
<CipherValue>A23B45C564587</CipherValue>
</CipherData>
</EncryptedData>
</PurchaseOrder>

三、xml文件加密源码实现

.NET的所有加密和解密是通过CryptoStream类来处理,它衍生自System.IO.Stream。NET构架从基本的SymmetricAlgorithm类扩展出来四种算法:

·System.Security.Cryptography.DES

·System.Security.Cryptography.TripleDES

·System.Security.Cryptography.RC2

·System.Security.Cryptography.Rijndael

java实现xml加密:

由于目前jdk版本对w3c的xml加密标准支持不够(jsp在开发完善中),可采用apache的Xsec基于sun的JCE来实现xml文件的加密解密。

四、字符串或文件的DES加密解密

基于MS的CryptoAPI 实现字符串或文件的DES加密解密,当然,加密算法可以选择。CryptoAPI共有五部分组成:简单消息函数(Simplified Message Functions)、低层消息函数(Low-level Message Functions)、基本加密函数(Base Cryptographic Functions)、证书编解码函数(Certificate Encode/Decode Functions)和证书库管理函数(Certificate Store Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。

CSP(cryptographic service provider):

CSP是真正实行加密的独立模块,他既可以由软件实现也可以由硬件实现。但是它必须符合CryptoAPI接口的规范。CSP详细信息见HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Cryptography/Defaults/Provider
下面简要列出各个CSP所含算法(不全):
CSP名称 + 类型
提供者描述
算法列表

MS_DEF_PROV + PROV_RSA_FULL
Microsoft Base Cryptographic Provider v1.0
Name:RC2            Type:Encrypt    Bits:40   Algid:00006602h
Name:RC4            Type:Encrypt    Bits:40   Algid:00006801h
Name:DES            Type:Encrypt    Bits:56   Algid:00006601h
Name:SHA-1          Type:Hash       Bits:160  Algid:00008004h
Name:MD2            Type:Hash       Bits:128  Algid:00008001h
Name:MD4            Type:Hash       Bits:128  Algid:00008002h
Name:MD5            Type:Hash       Bits:128  Algid:00008003h
Name:SSL3 SHAMD5    Type:Hash       Bits:288  Algid:00008008h
Name:MAC            Type:Hash       Bits:0    Algid:00008005h
Name:RSA_SIGN       Type:Signature  Bits:512  Algid:00002400h
Name:RSA_KEYX       Type:Exchange   Bits:512  Algid:0000a400h
Name:HMAC           Type:Hash       Bits:0    Algid:00008009h
MS_ENHANCED_PROV + PROV_RSA_FULL
Microsoft Enhanced Cryptographic Provider v1.0
Name:RC2            Type:Encrypt    Bits:128  Algid:00006602h
Name:RC4            Type:Encrypt    Bits:128  Algid:00006801h
Name:DES            Type:Encrypt    Bits:56   Algid:00006601h
Name:3DES TWO KEY   Type:Encrypt    Bits:112  Algid:00006609h
Name:3DES           Type:Encrypt    Bits:168  Algid:00006603h
Name:SHA-1          Type:Hash       Bits:160  Algid:00008004h
Name:MD2            Type:Hash       Bits:128  Algid:00008001h
Name:MD4            Type:Hash       Bits:128  Algid:00008002h
Name:MD5            Type:Hash       Bits:128  Algid:00008003h
Name:SSL3 SHAMD5    Type:Hash       Bits:288  Algid:00008008h
Name:MAC            Type:Hash       Bits:0    Algid:00008005h
Name:RSA_SIGN       Type:Signature  Bits:1024 Algid:00002400h
Name:RSA_KEYX       Type:Exchange   Bits:1024 Algid:0000a400h
Name:HMAC           Type:Hash       Bits:0    Algid:00008009h
MS_STRONG_PROV + PROV_RSA_FULL
Microsoft Strong Cryptographic Provider
Name:RC2            Type:Encrypt    Bits:128  Algid:00006602h
。。。。。。
MS_DEF_RSA_SCHANNEL_PROV + PROV_RSA_SCHANNEL
Microsoft RSA SChannel Cryptographic Provider
Name:RC2            Type:Encrypt    Bits:128  Algid:00006602h
。。。。。。
MS_DEF_DSS_PROV + PROV_DSS
Microsoft Base DSS Cryptographic Provider
Name:SHA-1          Type:Hash       Bits:160  Algid:00008004h
。。。。。。
MS_DEF_DSS_DH_PROV + PROV_DSS_DH
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
Name:CYLINK MEK     Type:Encrypt    Bits:40   Algid:0000660ch
。。。。。。
MS_ENH_DSS_DH_PROV + PROV_DSS_DH
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
Name:CYLINK MEK     Type:Encrypt    Bits:40   Algid:0000660ch
。。。。。。
MS_DEF_DH_SCHANNEL_PROV + PROV_DH_SCHANNEL
Microsoft DH SChannel Cryptographic Provider
Name:CYLINK MEK     Type:Encrypt    Bits:40   Algid:0000660ch
。。。。。。
MS_ENH_RSA_AES_PROV + PROV_RSA_AES
Microsoft Enhanced RSA and AES Cryptographic Provider
Name:RC2            Type:Encrypt    Bits:128  Algid:00006602h
。。。。。。
  

参考文档:

1、微软之——“用对称密钥对 XML 元素进行加密”(http://msdn2.microsoft.com/zh-cn/library/sb7w85t6.aspx

2、DES标准http://www.itl.nist.gov/fipspubs/fip46-2.htm

3、http://dev.yesky.com/266/2010266_1.shtml

4、http://www-128.ibm.com/developerworks/cn/xml/x-encrypt/index.html

 

xml加密XML Encryption)是w3c加密xml的标准。这个加密过程包括加密xml文档的元素及其子元素,通过加密xml的初始内容将被替换,但其xml格式仍然被完好的保留。 介绍 我们有3个加密xml的方法 1、仅仅使用对称加密的方法加密xml 这种加密方法只使用一个密钥,也就是说无论是加密xml还是解密xml都使用一个相同的密钥。因为这个密钥不会在被加密xml中保存,所以我们需要在加密解密的过程中加载这个密钥并保护它不被窃取。 2、使用对称加密和非对称加密相结合的方法来加密xml 这种方法需要一个用于加密数据的对称密钥和一个用于保护这个对称密钥的非对称密钥。被加密的对称密钥和被加密的数据一起保存在xml文档中。当用私有非对称密钥解密密钥的时候要用公开非对称密钥对密钥进行加密。 本文就将使用这种方法。想学到其他更多的方法请参看MSDN等到更多的信息。 (译者注:非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。) 3、使用X.509加密xml,这种方法是用X.509作为非对称密钥,它由诸如VeriSign之类的第三方提供。 方法 不管xml加密是如何完成的,保存加密数据总是用两种方法之一。 1、加密后所有的元素都被命名为 2、加密后只有数据被替换,而元素名称仍然是可读的,不会发生变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值