密码学的几个常见概念
- 古典密码与现代密码
- 对称加密与非对称加密
- 单向散列函数
- 编码与加密
- 数字签名与数字证书
古典密码与现代密码
区分古典加密和现代加密的一个很重要的因素是,古典加密一般都是比较简单的,而现代加密基本不存在手工解密的可能
古典加密又分为以下两种:
<1>置换密码:把明文中的字母重新排列,字母本身不变,只改变其位置。
<2>代换密码:暂不补充
现代加密:也就是用于现代计算机加密的加密方式,古典密码的置换加密和代换加密时现代密码学的基础。
对称加密与非对称加密
区分对称加密和非对称加密的标准是:加密和解密是否使用相同的密钥,如果使用相同的密钥则是对称加密,如果加密和解密使用的密钥是不同的那么则是非对称加密
对称加密(也称为私钥加密):对称加密从对明文到密文的处理方式又可以分为分组密码和序列密码
分组密码:对明文进行分块加密,再将加密后的密文组合成明文。常见的分组密码有以下几种:DES(数据加密标准)、AES(高级加密标准)、3DES(三重DES加密)……
序列密码:利用密钥产生密钥流,然后用密钥流对明文进行加密,从而产生密文。常见的序列密码有以下几种:RSA、RC4……
非对称加密(也称公钥加密):公钥加密一般是基于数学难题的加密体系,可以分为以下几种:基于大合数分解的密码、基于离散对数的密码、基于椭圆曲线的离散对数密码
公钥加密一般是使用(别人的)公钥进行加密,然后(别人)使用(别人的)私钥进行解密,这样就可以保证数据不会被泄露了。
如果使用私钥进行加密,用公钥进行解密可以吗?也是可以的,但是这种方式是不会被用来加密数据的。因为使用私钥进行加密的数据,任何一个人都可对密文进行解密,那还谈什么机密性呢?那这种方式就没用了吗!并不是,这种私钥加密公钥解密的方式是数字签名,有了数字签名,那么别人就认准你了,这就是你发出的信息,因为只有你自己有你自己的私钥啊。
单向散列函数
单向散列函数又称为哈希函数、摘要函数,特点就是单向的,不可逆的。将不定长的数据输入可以输出固定长度的输入。严格来讲,单向散列函数不属于加密体系,因为它是不可解密的。它只是产生了消息摘要,但是因为不同的输入会产生唯一的输入,加上是不可逆的,所以,经常会被用来存储密码。
常见的单向散列算法有:
md5:根据md1、md2等发展而来(已经被证实不安全)
sha1
sha256
RC
编码与加密
编码与加密并不能混为一谈,或许可以把编码称作是加密,但是绝对不能把加密称作编码,编码是为了数据的存储、传输的便捷或者是从计算机理解的二进制到人理解的字符的一种转换,而加密则是为了数据的机密性。因为有时,编码也能在一定程度上保证数据的机密性(但是对略微了解编码的人来说机密性就不存在了),所以编码有时也被人认为是加密。
数字签名与数字证书
数字签名:好比是人的签名一样,签了名就认为是你认定了这件事,是不可否定了。数字签名也是一样的,一般认为是不可否认的。
数字签名:利用单向散列函数对要发送的数据进行单向散列,得到消息摘要,然后利用公钥加密体系的私钥对消息摘要进行加密,这样就得到了数字签名,然后将数字签名和消息一起发给接收方。
当接收方接收到消息的时候,先用你的公钥对数字签名进行解密,(能够解密说明一定是你发出的,其他人都没有你的私钥啊),然后对接收到的消息进行摘要(使用md5、sha1或者别的什么摘要算法),如果得到的摘要和解密得到的摘要是一直的,那么证明所接收到的消息没有经过第三者的修改。(但是此时并不代表数据没有第三者知道!!!)
数字证书:暂不补充
全部凭借记忆所写,所以总结的非常不全面,只能够算是个科普吧!如果有什么错误的或者不严谨的地方请留言,谢谢^V^