MD5与Salt
加密
加密,以某种特殊的算法改变原来的信息数据。使得未授权的用户即使获得了已加密的信息,因为没有相对应的解密算法,无法正常阅读原文数据。
加密更多说的是基于密码的一种算法。
密码算法:
本质上:就是对明文的文件或者数据按照某种算法进行加工处理,使其成为不可读的一套代码。(ifelse while for)
在密码算法中,目前流行的有五种:
-
对称加密
对称加密本质上就是单密钥加密
意思就是加密和解密使用的是相同密钥的一种加密算法
在http应用比较多。
一般在进行数据传输的时候,还要去配置数字证书
特点:
- 算法公开
- 计算量少
- 加密速度快
- 不安全
- 与多方通信时需要使用不同的密钥,管理起来很不方便
常见的对称加密算法:DES、RC2、RC4、RC5…
-
非对称加密
非对称加密使用的一对公钥和私钥来加密通信数据,也称之为双加密钥算法。
公钥和私钥一般都是成对出现的。
通信的数据使用公钥加密后,只能使用对应的私钥来解密。
同样使用私钥加密后的也只能通过公钥来解密查看。
非对称加密数据通信称之为单向安全的。
用途:
- 单向传输加密数据,防止中间人攻击
- 身份验证和数据校验。使用第三方SDK时,一般还需要通过RSA去生成一对公钥和私钥,采用的非对称加密算法
- 一般在第三方平台下载一些应用的时候,确保下载的应用原文文件没有篡改,一般需要进行校验MD5或者sha-1码
- 常见的非对称加密算法:RSA、DSA、ECC等等。。。
-
信息摘要算法
信息摘要算法,也称之为hash算法、散列算法。
可以将任意文件或者数据的长度(任意)转换成一个定长的、不可逆的数字(十六进制)。
只要原文本不同,计算出来的结果必然不同(不会重复)
摘要算法主要是用于对比信息源是否一致,只要数据源发生变化,得到的摘要信息必要不同。
通常用于签名校验。
特点:
- 无论原文信息有多长、计算出来的信息摘要长度总是一样的(固定的)
- 信息摘要算法不是随机的,因为相同的算法对相同的信息计算两次摘要,得到的结果必然相同。
- 常见的摘要算法:MD5/SHA-1/SHA-0/SHA-256
-
数字签名
数字签名是非对称加密算法和信息摘要算法的一种应用,能够保证在信息传输过程中不被篡改,也不能被仿造。
原理:
使用时,发送方使用摘要算法获得发布内容的摘要信息,然后使用私钥对摘要信息进行加密(加密后的数据就是数字签名),然后将发布内容、数字签名和公钥一起发送给接收方即可。接收方收到发布内容后,首先取出公钥解密数字签名,获得正文的摘要信息。然后使用相同的摘要算法计算摘要数据,将计算的摘要数据和解密的摘要进行对比,如果摘要信息一致,则说明内容没有被篡改。
实际上,如果你的实际单一的数字签名应用,则会存在巨大风险。
-
数字证书
数字证书是由第三方权威CA机构颁发的,这个证书是无法被仿造的。用于校验发送方实际身份的认证。
MD5与SHA-1的区别
MD5信息摘要算法是一种被广泛使用的的散列函数,可以产生出一个128位(16的字节)的散列值(hash value),用于确保信息传输的完整一致性。
MD5他无法防止碰撞,因此不适用于安全性认证。
原理:
MD5算法的原理可以简单的概括为:MD5码是以518位分组来处理输入的信息,每一组被划分为为16个32位子分组,经过一系列的处理后,算法的输出有四个32位分组组成。将这四个32位分组级联后将生成一个128位的散列值。
MD5值是可以破解的,使用穷举法,暴力破解法(可以参照彩虹表)等
SHA-1信息摘要算法,是一种安全的散列算法,是一种密码散列函数
SHA-1 可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。
异同点:
摘要的长度不同 128 160
运算的步骤不同 64 80
安全性不同 SHA-1更安全一些
速度不同: MD5速度更快一些,性能较优。