Hi,
你的问题我来回答,呵呵,最近还在研究WCF的安全问题。这个加密算是其中的一个方面。之前论坛也和他们讨论过加密、安全、证书相关的问题。
你的这个可逆加密就是对称加密或者非对称加密都可以实现的。
简单来说就是:
对称加密:你使用同一个密钥加密,然后使用同一个密钥解密。
非对称加密:就是公钥和私钥是一对,公钥加密,私钥解密。
哈希算法:这个就是对数据做个hash计算,不可逆。这里就不讨论了。
.NET 里实现了主流的加密算法:
我们之前在WCF论坛里的讨论,几乎覆盖了安全相关的主要知识点:
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
公钥加密:公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证,.NET 通过抽象基类 (System.Security.Crytography.AsymmetricAlgorithm) 提供下列非对称(公钥/私钥)加密算法:
• |
DSACryptoServiceProvider
|
• |
RSACryptoServiceProvider
|
相对来说。非对称加密比对称加密安全,对称加密只有一个密钥,用来加密和解密。非对称的安全性较高。
其他的概念你可以再msdn中查找这几个类的说明都有详细介绍,安全的概念可以参考:
WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理。
对称加密,很多对称加密的算法,其实也是这个思路,使用一个key对数据加密,揭秘也使用同一个key。
发送前加密和接收后解密,都使用一个key。私钥加密算法:使用单个私钥来加密和解密数据。由于具有密钥的任意一方都可以使用该密钥解密数据私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密并不能实现数据完整性,即防止数据被更改;也无法完成对身份的验证,即确保数据发自特定的一方。.NET 提供以下实现类以提供对称的密钥加密算法:
• |
DESCryptoServiceProvider
|
• |
RC2CryptoServiceProvider
|
• |
RijndaelManaged
|
• |
TripleDESCryptoServiceProvider
|
另外关于加密、证书、签名和如何获得证书等问题你可以参考搜索,也可以参考一下文章:
1.
WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发2
WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发 3.
WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理 4.http://msdn.microsoft.com/zh-cn/library/ms752237.aspx。消息安全;
我也在准备WCF 安全方面的文章,以后会发出来吧~
安全一直是一个十分重要的问题,在配置和实施的过程中需要注意很多细节,个人学习往往问题很多,我个人也对此很有兴趣~希望能多交流~
你可以参考第一个:
http://social.msdn.microsoft.com/Forums/en-US/wcfzhchs/thread/9a525136-fae1-4abb-933c-8da89654509ehttp://social.msdn.microsoft.com/Forums/en-US/wcfzhchs/thread/34f10b1a-dede-4e4c-aa35-25fb4a655185
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
欢迎访问老徐的中文技术博客:
Welcome to My Chinese Technical Blog
欢迎访问微软WCF中文技术论坛:
Welcome to Microsoft Chinese WCF Forum
欢迎访问微软WCF英文技术论坛:
Welcome to Microsoft English WCF Forum