摘要:加密在我们前台的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(。常见的加密方式常见的加密算法基本分为这几类,线性散列算法(签名算法)MD5 SHA1,对称性加密算法 AES DES,非对称性加密算法 RSA。下面一起来看看吧!
数据加密可在网络OSI七层协议(OSI是Open System Interconnect的缩写,意为开放式系统互联。国际标准组织(国际标准化组织)制定了OSI模型。这个模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。)的多层上实现、所以从加密技术应用的逻辑位置看,有三种方式:
①链路加密:通常把网络层以下的加密叫链路加密,主要用于保护通信节点间传输的数据,加解密由置于线路上的密码设备实现。根据传递的数据的同步方式又可分为同步通信加密和异步通信加密两种,同步通信加密又包含字节同步通信加密和位同步通信加密。
②节点加密:是对链路加密的改进。在协议传输层上进行加密,主要是对源节点和目标节点之间传输数据进行加密保护,与链路加密类似.只是加密算法要结合在依附于节点的加密模件中,克服了链路加密在节点处易遭非法存取的缺点。
③端对端加密:网络层以上的加密称为端对端加密。是面向网络层主体。对应用层的数据信息进行加密,易于用软件实现,且成本低,但密钥管理问题困难,主要适合大型网络系统中信息在多个发方和收方之间传输的情况。
常见的加密算法基本分为这几类,
线性散列算法(签名算法)MD5 SHA1
对称性加密算法AES DES
非对称性加密算法RSA
MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5加密之后产生的是一个固定长度(32位或者16位)的数据
MD5是可以进行反向暴力破解的。也就是用很多不同的数据进行加密后跟已有的加密数据进行比照。理论上只需数据量足够庞大MD5是可以被破解的。
MD5考虑的是破解的成本(时间和机器性能)。假设破解当前的MD5密码需要目前计算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
添加破解成本的方法。
使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
解密。MD5不存在解密。只能把数据进行相同的MD5解决之后跟之前的的加密串进行比照。
我们在注册账号时的密码一般都是用的MD5加密。
RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)
非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,假如用公钥对数据进行加密,只有用对应的私钥才能解密。由于加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
算法强度复杂、安全性依赖于算法与密钥但是因为其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密。
网站客户输入的支付密码会通过RSA加密。
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或者被解密的数据;Mode为DES的工作方式,有两种:加密或者解密。
AES这个标准用来替代原价的DES。
DES/AES我们合并在一起详情其用法和特点。
DES/AES是一种对称加密方式,加密运算、解密运算使用的是同样的密钥。
使用DES/AES进行数据交互时要求双方都拥有相同的私匙。
破解方法,暴力破解。DES使用56位的密钥,则可能的密钥数量是2的56次方个。只需计算足够强大是可以被破解的。
Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。
base64原理
Base64使用A--Z,a--z,0--9,+,/这64个字符。
将3个字节转换成4个字节((3 X 8)=24=(4 X 6))先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。
Response.Write("
-----------MD5加密---------------
");
Response.Write(SDKSecurity.MD5Encrypt("仰天一笑"));
Response.Write("
-----------DES加密---------------
");
Response.Write(SDKSecurity.DESEncrypt("仰天一笑","anson-xu"));
Response.Write("
-----------DES解密---------------
");
Response.Write(SDKSecurity.DESDecrypt("l06JvJ45r/lb9iKzSXl47Q==","anson-xu"));
Response.Write("
-----------AES加密---------------
");
Response.Write(SDKSecurity.AESEncrypt("仰天一笑","ansonxuyu"));
Response.Write("
-----------AES解密---------------
");
Response.Write(SDKSecurity.AESDecrypt("avwKL+MO8+zoLHvzk0+TBA==","ansonxuyu"));