参考资料:http://www.iplaysoft.com/encrypt-arithmetic.html
http://www.360doc.com/content/14/0323/01/1355383_362832203.shtml
简单加密实例入门:
发送一串文字ABCDEF,要将这些文字变为密文,就将A替换为C,将B替换为D,将C替换为E,将D替换为F,将E替换为G,将F替换为H,最后ABCDEF就使用CDEFGH,而ABCDEF才是明文,是真正的内容,而CDEFGH就是加密后的密文,并不是真正的内容,从加密过程可以看出,明文“ABCDEF”通过将每个字母替换成后面第二个字母的方法被加密城了“CDEFGH”,在这里,将每个字母替换成后面第二个字母的方法可以称为加密方法,也成为加密算法,当内容被加密之后,接收者还必须先将密文解密,才能看懂内容,这里就将密文“CDEFGH”的每个字母替换成前面第二个字母,便得到明文“ABCDEF”。
加密算法和加密密码是不一样的,知道加密算法并没有多大用处,也不能对加密的文字进行解密。在上例中,将每个字谜替换成后面第二个字母就是密钥(密码),如果别人只是知道我们使用的加密算法是字母替换发,但他不知道每个字母具体被替换成了哪个字母,是没办法将密文还原的,所以对数据加密的算法可以被公开,但是机密的密钥一定要保密不能被窃取,否则密文也就变得不安全了,因此,如何保证密钥的安全是相当重要的。
加密算法又分为对称加密与非对称加密:对称加密双方采用共同密钥,使用该秘钥加密,再使用相同的秘钥进行解密;非对称秘钥,这种加密方式存在两个密钥,密钥-- 一种是公共密钥(正如其名,这是一个可以公开的密钥值),一种是私人密钥(对外保密)。 您发送信息给我们时,使用公共密钥加密信息。 一旦我们收到您的加密信息,我们则使用私人密钥破译信息密码。
下面谈一下我们经常使用的几种加密算法:
对称加密算法(私钥算法)
DES(Data Encryption Standard): DES加密共有三种形式,分为DWS(40-bit长度加密),DES(56-bit长度加密)以及3DES(3倍的56-bit长度加密,即168-bit长度加密);由于3DES加密长度够长,安全性够高,所以推荐使用3DES。 AES(Advanced Encryption Standard):AES加密共有三种形式,分为AES 128 (128-bit长度加密),AES 192 (192-bit长度加密)以及AES 256 (256-bit长度加密);由于AES 256加密长度够长,安全性够高,所以推荐使用AES 256。
非对称加密算法:
MD5(Message Digest 5):将任何数据通过计算后输出128-bit长度的Hash值。
SHA-1(Secure Hash Algorithm 1):将任何数据通过计算后输出160-bit长度的Hash值。
下面详细了解一下MD5加密算法:
MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。
数字签名:数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。