<div class="blogpost-body" id="cnblogs_post_body">
<p>本文不对具体的算法做深入研究,只是讲解各种安全算法的原理和使用场景。</p>
<hr>
<h2>一、数据校验算法</h2>
<blockquote>
<p><strong>数据校验,是为保护数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。当接收方用同样的算法再算一次校验值,如果两次校验值一样,表示数据完整。</strong></p>
</blockquote>
<p><strong>1、奇偶校验</strong></p>
<p> 能检测出信息传输过程当中的一位误码。出现错误不能检测出错误,只能要求重发。</p>
<p><strong>2、 CRC循环冗余校验</strong></p>
<p><strong> </strong>通过增加若干冗余位,可以检测出传输过程中的错误。检错和纠错能力强,在通信领域运用较广泛。</p>
<p><strong>3、MD5校验</strong></p>
<p> MD5算法是一种信息摘要算法,是通过哈希映射的原理得到一个大文件简短的MD5值。该算法是一种不可逆算法,也就是说开发者不能通过MD5值得到原始文件的数据。这里有一种可能性,不同的数据文件得到相同的MD5值,但是这种情况一般开发过程当中都不予考虑(数据碰撞)。</p>
<p><strong>4、 SHA</strong></p>
<p> <a href="http://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F">SHA</a>(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。</p>
<p> 同MD5算法相同,他也是一种不可逆的算法。</p>
<hr>
<h2>二、对称加密算法</h2>
<ul><li><strong>1、Base64 编解码</strong></li></ul>
<p> 该算法只能称为一种校验,是对原始的数据进行了一个编码的过程。 有编码就有解码,该过程是一个可逆的。该算法安全性较差,可以很轻松的通过解码将密文转换为明文,从而获取信息。</p>
<ul><li><strong>2、DES 数据加密算法</strong></li></ul>
<p> 是对称加密算法领域中的典型算法,现在认为是一种不安全的加密算法,因为现在已经有用穷举法攻破DES密码的报道了。尽管如此,该加密算法还是运用非常普遍,是一种标准的加密算法。3DES是DES的加强版本。</p>
<p> DES加密的秘钥是 56位,而3DES加密算法的秘钥是 112位或者168位。3DES加密处理速度较慢、密钥计算时间较长、加密效率不高。</p>
<ul><li><strong>3、AES 数据加密算法(推荐使用)</strong></li></ul>
<p>Advanced Encryption Standard ,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法。</p>
<p>密钥建立时间短、灵敏性好、内存需求低、安全性高</p>
<p>DES/3DES/AES 三种加密算法的对比如下:</p>
<p><a href="https://images2018.cnblogs.com/blog/918077/201805/918077-20180510172529198-85011810.png"><img alt="image" border="0" height="337" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-88d2ad184ad9e54a9c5ac1a4cb4b42a2.png" style="margin-left:auto;background-image:none;" title="image" width="464"></a></p>
<ul><li><strong>4、异或加密</strong></li></ul>
<p>异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。</p>
<p>这种加密算法较简单,只是简单的将明文转换为不易看出的密文,破解的复杂度完全取决于秘钥的长度。</p>
<hr>
<h2>三、非对称加密算法</h2>
<p> 公开密钥加密,又称 asymmetric cryptography (非对称加密),即存在两把不同的密钥,分别称为公钥 Pu 和私钥 Pr,公钥通常用来加密明文 M,只有私钥才能解密密文 C,如果用 E 和 D 分别表示加密和解密算法,那么有:</p>
<blockquote>
<p>C = E(M,Pu); // 加密公式,M为明文,C为密文,</p>
<p>M = D(C,Pr); // 解密公式</p>
</blockquote>
<p> <a href="https://images2018.cnblogs.com/blog/918077/201805/918077-20180510172530263-1494686384.png"><img alt="image" border="0" height="219" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-1f91aba2e78a478acb307387304f4316.png" style="margin-left:auto;background-image:none;" title="image" width="469"></a> </p>
<p>传统的对称加密需双方共享相 |
|