随着互联网的快速发展,许多数据资源能够依靠网络来远程存取,而且越来越多的通讯依赖于公共网络公共网络(如 Internet),而这些环境并不保证实体间的安全通信,数据在传输过程可能被其它人读取或篡改加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的通信信道,它达到以下目的:
保密性:防止用户的标识或数据被读取。
数据完整性:防止数据被更改。
身份验证:确保数据发自特定的一方。
一、数据加密/编码算法列表
常见用于保证安全的加密或编码算法如下:
1、单向散列算法
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;
MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。
MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;
CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。
2、常用密钥算法
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括:
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法;
BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快;
IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;
其它算法,如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。
3、其它数据算法
其它数据算法包括一些常用编码算法及其与明文(ASCII、Unicode 等)转换等,如 Base 64、Quoted Printable、EBCDIC 等。
二、算法的 .NET 实现
常见的加密和编码算法都已经在 .NET Framework中得到了实现,为编码人员提供了极大的便利性,实现这些算法的名称空间是:System.Security.Cryptography。
System.Security.Cryptography 命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。
System.Security.Cryptography 是按如下方式组织的:
1、公钥加密和数字签名
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以被任何人使用;该密钥用于加密要发送到私钥持有者的数据。两个密钥对于通信会话都是唯一的。公钥加密算法也称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。
.NET Framework 提供以下实现公钥加密算法的类:
DSA:DSACryptoServiceProvider
RSA:RSACryptoServiceProvider
2、私钥加密
私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。
.NET Framework 提供以下实现私钥加密算法的类:
Rijndael(AES):RijndaelManaged
3DES:TripleDESCryptoServiceProvider
DES:DESCryptoServiceProvider
RC2:RC2CryptoServiceProvider
3、哈希(Hash)值
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。
.NET Framework 提供以下实现数字签名算法的类:
HMAC:HMACSHA1 (HMAC 为一种使用密钥的 Hash 算法)
MAC:MACTripleDES
MD5:MD5CryptoServiceProvider
SHA1:SHA1Managed、SHA256Managed、SHA384Managed、SHA512Managed
4、随机数生成
加密密钥需要尽可能地随机,以便使生成的密钥很难再现,所以随机数生成是许多加密操作不可分割的组成部分。
在 .NET Framework 中,RNGCryptoServiceProvider 是随机数生成器算法的实现,对于数据算法,.NET Framework 则在其它命名空间中实现,如 Convert 类实现 Base 64 编码,System.Text 来实现编码方式的转换等。
从以上来看,.NET Framework 对于数据加密/编码还是支持比较好,大大地方便了开发人员,但美中不足的是,.NET Framework 中的数据加密算法仍然不够完全,如 IDEA、BLOWFISH、其它算法,如ElGamal、Deffie-Hellman、ECC 等,对于一些其它的数据校验算法支持也不够,如 CRC、SFV 等,开发人员只能去从早期代码做移植或者寻找第三方厂商的实现。
轻松上手!十大远程控制电脑软件推荐
如今,网上办公、异地协助等场景越来越普遍。你有没有碰到过这样的疑惑:在家办公,却发现公司电脑内有秘密文件;父母在家乡碰到电脑问题,但你不能亲身指导和帮助;团队人员分散在各个地区,急缺实时共享屏幕协同工作。一款好用的远程控制软件就能轻松解决各种问题。今日,便给大家推荐十款超实用的远程控制软件,让您可以随便进行远程控制。一...
秒懂!电脑屏幕实时监控软件如何帮助你管理团队
一则新闻引起了人们的密切关注。一家初创公司雄心勃勃地开启了一个关键项目,投入了大量的人力、物力和财力。但是,当项目到期时,发觉进度严重滞后,结论远未达到预估。通过调查,发觉员工在工作时间常常走神,用公司电脑刷小视频,打游戏,处理私人事务,造成工作效率极低。在目前的工作场所,团队协作面临很多考验,如何确保员工的高效工作成...
监控电脑屏幕的软件有哪些?
随着电脑使用的崛起,一些令人堪忧的问题也逐渐浮出水面。你有没有担忧过自己的电脑屏幕在不经意间被别人窥视?或者,你是否需要一个软件来监督孩子或职工的电脑使用,以保证她们远离不良记录?今天,我们来谈谈那些可以监管电脑屏幕的软件,以及它们怎样成为数据世界的守卫者。一、为什么需要电脑屏幕监控软件?电脑屏幕上的数据通常包含了我们...
数据安全小贴士:文件夹加密的简单方法
在这个信息爆炸的时代,我们每天都在与大量数据共处。从工作文件到家庭照片,从学习资料到个人信息,这些数据成为了生活中不可或缺的一部分。可是,你有没有想过,这些数据,特别是存储在电脑中的文件夹,合不合适?根据最新调研,全球每年数据泄漏造成的经济损失做到数千亿美元,数据泄漏已成为黑客入侵的重灾区。那么,怎样保护我们的文件夹免...
移动硬盘如何加密码保护?
在这个信息爆炸的时代,我们每天都在与大量数据共处。从工作文件到家庭照片,从学习资料到个人信息,这些数据成为了生活中不可或缺的一部分。移动硬盘作为我们存储和携带数据的重要手段,其安全性也越来越受到重视。你有没有想过,你的移动硬盘无意间可能成为了数据泄露的“多发区”?近些年,随着网络安全事件的高发,数据泄漏风险也不断攀升。...