密码系统与.NET Framework

安全是许多应用的关键。提供认证和授权服务仅仅是整个安全系统的一部分。当数据在应用系统中使用、传输,它会如何呢?这就是密码学之所以由来的原因。密码学本身是一个很大的论题。在接下来的文章中,我们仅仅讨论.Net Framework及其提供的密码加密类。

为什么要用加密系统?

大多应用系统提供了安全特征,比如登录框、基于角色的认证等。然而当一些人如果截取了网络中的数据怎么办?或某人伪造传送在网上的数据?如果某人打开了存储密码的数据库?密码系统将提供我们解决问题的方法。使用.NET Framework加密类,你可以将流动在你系统中的数据加密,当认证的用户需要读取或修改时再解密数据。简而言之,密码系统具有下面的特征:
。保护数据不被第三方读取
。保护数据不被其它方修改
。保证数据正确到达目的地

密码类的类型:

在.Net Framwork个可用的加密类型包括下面几个:

。密钥加密类
。公钥加密类
。数字签名类
。哈希加密类
所有加密相关的类可以在System.Security.Cryptography名称空间中找到。

=密钥加密=
在密钥加密中,数据被一个唯一的密钥加密。这个密钥只有信息的接收和发送方知道。发送方使用密钥加密,接收方使用同一密钥解密。

.NET Framework提供以下几个类处理密钥加密。
DESCryptoServiceProvider
RC2CryptoServiceProvider
RijndaelManaged
TripleDESCryptoServiceProvider
:公钥加密:
和密钥加密不同,公钥加密使用两个密钥。一个叫做公钥一个是私钥。公钥是对外公开的,私钥则被这个密钥的拥有者保存着。被密钥加密的数据只能被相应的公钥解密。同样,被公钥加密的数据只能被相应的私钥解开。
自然地,为了加密你要传送的数据,你需要使用公共密钥。而它只能被相应的私有密钥解开。

.NET Framework提供了以下类处理公共密钥加密。

DSACryptoServiceProvider
RSACryptoServiceProvider

==数字签名==

数字签名被用在确认发送者的身份及保证数据的完整。它经常和公共钥匙加密一起使用。数字签名工作如下:

。发送者使用哈希算法对要发送的数据产生一个信息摘要,这个摘要简单描述了要发送的数据。
。发送者使用私有密钥加密信息摘要从而得到一个数字签名。
。发送者通过安全渠道将数据发送出去。
。接收方收到数据,并使用公共密钥解密数字签名重新得到信息摘要。
。接收方应用相同的哈希算法创建一个新的信息摘要。
。如果发送方的信息摘要与招收方的信息摘要一致,则说明信息来自正确的地方。

DSACryptoServiceProvider 与 RSACryptoServiceProvider 类用来创建数字签名。

哈希加密==

哈希算法为给定可变长度的数据创建固定长度的输出。如果源数据改变,则产生不同的哈希值。它常常和数字签名一起使用。

.NET中提供了下面几个哈希类。

SHA1Managed
MD5CryptoServiceProvider
MACTripleDES

随机数生成器

在密码系统中,你可能多次需要产生密钥,随机数生成器可以满足要求。在.NET中RNGCryptoServiceProvider产生这样的随机数。
下一篇文章将介绍密钥加密几个类的使用

时间: 2024-08-29 07:57:32

密码系统与.NET Framework的相关文章

SUN Solaris Cryptographic Framework密码体系

自称Solaris系统管理员的,应了解一下Solaris 密码体系: Solaris OS Cryptographic Framework(SCF)密码体系以无缝透明的形式对用户提供应用和内核模块的加密服务,用户应用很少察觉到,并且很少受到干扰,其中包括命令.用户程序编程接口.内核编程接口,和其优化加密算法的程序,包括: AES - Advanced Encryption Standard高级加密标准, 是美国联邦政府标准,是指定的标准密码系统,未来将在政府和银行业用户使用,因为它的执行速度很快

.NET Framework For Java Programmers

.NET Framework For Java Programmers Author: Ashish Banerjee Objective After reading this article Java programmers should be able to decipher and de-jargonize the .NET architecture and relate it with the proposed ECMA standard.    Target Audience Java

解决一个Django Rest Framework的JSON输出的小问题

  在服务器升级迁移过程中,遇到一个见了鬼的问题. 同样的一个API输出,在本机测试时和生产中一台机器上的输出为纯数据的json格式. 而在另一台生产机器上却为加了统计和跳转信息的另一种json格式. 由于前端用了vue.js作了数据的加载,如果同样的代码,那获取json中对象的信息显然就会发生问题. 解决BUG的时间来不及,也无法深入调试.可用以下代码,判断json中是否有存在对象来进行对象的赋值,可解决这个输出问题. 以后找时间还是深入研究一下这个DRF的输出机制吧. //此处兼容djang

ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下)

三.IsLine.ExceptionProcess 部分 这部分主要管理异常,对异常的管理分为两部分,异常记录和异常展现,你可以分开对其进行配置, 即异常的记录与展现之间互不影响. 关于异常记录: <add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender"/> 使用该信息指定记录异常的节点,"OracleUsingSPRender

.NET Framework For Java Programmers ---4(Good)

Conclusion.NET is definitely an improvement over Java framework, but it is NOT going to displace Java any time soon. Though in coming years Java and .NET will converge. It currently lacks support for other platforms. Since .NET has been architected b

框架-如何在android framework中修改webview禁掉软键盘

问题描述 如何在android framework中修改webview禁掉软键盘 5C 如题,在webview调用的网页中,点击input标签后会弹出软键盘,现在有个需求需要禁用软键盘,用户会通过遥控输入,请问该如何修改 解决方案 调用hideKeyBoard()可以禁用软键盘 解决方案二: 在当前界面 隐藏掉 软键盘 调用hideKeyBoard()可以禁用软键盘 解决方案三: 对应的activity设置windowSoftInputMode-stateAlwaysHidden

[原][自动化测试]Robot Framework Selenium基本使用

Robot Framework Selenium基本使用 首先要说一下,一切和Robot Framework相关的资料都可以通过官方 http://code.google.com/p/robotframework/ 查询学习. 一.工具基本安装 准备条件: 1.Python语言及库,环境变量等: a) 准备文件:python-2.7.4.amd64.msi b) 基本安装:最好保持C盘默认路径,方便后面安装 c) 基本配置:环境变量配置很简单:path中添加安装目录,默认路径的话是C:\Pyth

NET Framework 工具

Microsoft .NET Framework SDK 工具旨在更轻松地创建.部署和管理针对 .NET Framework 的应用程序和组件.本节包含有关这些工具的详细信息. 可以从命令行运行除程序集缓存查看器 (Shfusion.dll) 和 Microsoft CLR 调试器 (DbgCLR.exe) 之外的所有工具.必须从 Microsoft Windows 资源管理器访问 Shfusion.dll.DbgCLR.exe 位于 Microsoft.NET\FrameworkSDK\Gui

如何向android的framework里添加新类

google对于所有的类和API,分为开放式和不开放式两种.所谓的开放式就是值javadoc所包含的,并不是java中有public和private,而是跟javadoc有关系,代码  没有关系. 在开放式的类中增加了一个变量,而又没隐藏,导致和原API的doc不一致造成的就会有错. 通过提示,有2个方法可以解决  该问题: 1.将新增加的变量或方法加上"@hide" 的注释,注意一点,加"@hide" 不是简简单单的/*@hide */就行了,标准的javadoc