在编程中我觉的最重要的有三个部分编程语言,算法和数据结构。如果失掉了算法和数据结构那但留下编程语言也就没有存在的必要了。因为前几天工作中前端人员写好了加密算法,我在后端进行解析,同时把返回前端的数据也进行加密。我根据这种情况来介绍一下。本篇文章主要讲一下加密的一些概念。

在密码学中有几个重要的概念:
私钥(private key)——私有的钥匙
公钥(public key)——公开的钥匙
密钥(secret key)——秘密的钥匙,分为对称密钥与非对称密钥

根据密码算法所使用的加密密钥和解密密钥是否相同、能否由加密过程推导出解密过程(或者由解密过程推导出加密过程),可将密码体制分为对称密码体制(也叫作单钥密码体制、秘密密钥密码体制、对称密钥密码体制)和非对称密码体制(也叫作双钥密码体制、公开密钥密码体制、非对称密钥密码体制)。
 

对称密钥加密,又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密系统,又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。非对称密钥加密技术采用一对匹配的密钥进行加密、解密,具有两个密钥,一个是公钥一个是私钥,它们具有这种性质:每把密钥执行一种对数据的单向处理,每把的功能恰恰与另一把相反,一把用于加密时,则另一把就用于解密。用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密。 公共密钥是由其主人加以公开的,而私人密钥必须保密存放。为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。 相反地,用户也能用自己私人密钥对数据加以处理。换句话说,密钥对的工作是可以任选方向的。

人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,然后在用公开密钥加密系统来加密密钥。
 
非对称实例

目前为止,RSA是应用最多的公钥加密算法,能够抵抗已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法中,每个通信主体都有两个钥匙,一个公钥(Public Key)用来对数据进行加密; 一个私钥(Private Key)用来对数据进行解密。


对称实例


DES(Data Encryption Standard,数据加密标准)


3DES(Triple DES、DESede,进行了三重DES加密的算法)


AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)

 


接下来的文章我会将具体两种实例代码给大家写一下。