密码学在加密算法上分类
2016-04-10 00:00
267 查看
摘要: 密码学在加密算法上大体可分为单向加密算法、对称加密算法、非对称加密算法。
MD5、SHA是单向加密算法的代表,单向加密算法是数据完整性验证的常用算法。
DES是典型的对称加密算法的代表,对称加密算法是数据存数加密的常用算法。
RSA算法是非对称加密算法的代表,非对称加密算法是数据传输加密的常用算法。
散列函数,也称做哈希函数、消息摘要函数、单向函数或杂凑函数。通过散列函数,可以为数据创建“数字指纹”(散列值)。散列值通常是一个字母和数字组成的字符串。
其消息认证流程如下:
在上述认证流程中,信息收发双方在通信前已经商定了具体的散列算法,并且该算法是公开的。如果消息在传递过程中被篡改,则该消息不能与已获得的数字指纹相匹配。
散列函数具有以下的特征:
消息的长度不受限制
对于给定的消息,其散列值的计算是很容易的。
如果两个散列值不相同,则这两个散列值的原始输入消息也不相同,这个特性使得散列函数具有确定性的结果。
散列函数的运算过程是不可逆的,这个特性称为函数的单向性。这也是单向函数命名的由来。
对于一个已知的消息及散列值,要找到另一个消息使其获得相同的散列值是可不能的。这个特性称为抗弱碰撞性。这被用来防止伪造。
任意两个不同消息的散列值一定不同。这个特性称为抗强碰撞性。
散列函数广泛用于信息完整性的验证,是数据签名的核心技术,散列函数的常用算法有MD----消息摘要算法、SHA-----安全散列算法及MAC-----消息认证码算法。
对称密码体制的保密模型:
对称密码体制分为两种:
一种是对明文的单个位(或字节)进行运算,称为流加密,也称序列加密。
另一种是把明文信息划分成不同的组(或块)结构,分别对每个组(或块)进行加密和解密,称为分组加密。
非对称密码体制的保密通信模型:
在非对称密码体制中,公钥和私钥均可用于加密和解密操作,但它与对称密码体制不同。公钥与私钥分属通信双方,一份消息的加密和解密需要公钥与私钥共同参与。公钥加密则需要私钥解密,反之,私钥加密则需要公钥解密。
MD5、SHA是单向加密算法的代表,单向加密算法是数据完整性验证的常用算法。
DES是典型的对称加密算法的代表,对称加密算法是数据存数加密的常用算法。
RSA算法是非对称加密算法的代表,非对称加密算法是数据传输加密的常用算法。
单向加密算法
单向加密算法主要用于对信息完整性的验证,这种技术就是由散列函数提供的消息认证技术。散列函数,也称做哈希函数、消息摘要函数、单向函数或杂凑函数。通过散列函数,可以为数据创建“数字指纹”(散列值)。散列值通常是一个字母和数字组成的字符串。
其消息认证流程如下:
在上述认证流程中,信息收发双方在通信前已经商定了具体的散列算法,并且该算法是公开的。如果消息在传递过程中被篡改,则该消息不能与已获得的数字指纹相匹配。
散列函数具有以下的特征:
消息的长度不受限制
对于给定的消息,其散列值的计算是很容易的。
如果两个散列值不相同,则这两个散列值的原始输入消息也不相同,这个特性使得散列函数具有确定性的结果。
散列函数的运算过程是不可逆的,这个特性称为函数的单向性。这也是单向函数命名的由来。
对于一个已知的消息及散列值,要找到另一个消息使其获得相同的散列值是可不能的。这个特性称为抗弱碰撞性。这被用来防止伪造。
任意两个不同消息的散列值一定不同。这个特性称为抗强碰撞性。
散列函数广泛用于信息完整性的验证,是数据签名的核心技术,散列函数的常用算法有MD----消息摘要算法、SHA-----安全散列算法及MAC-----消息认证码算法。
对称密码体制
对称密码体制的保密模型如下图所示。对称密码体制要求加密和解密使用同一个密钥,解密是加密的逆运算,由于通信双方共享同一个密钥,这就要求通信双方必须在通信前商定该密钥,并妥善保存该密钥,该密钥称为私密密钥。私密密钥的存在使得对称密码体制开放性变差。对称密码体制的保密模型:
对称密码体制分为两种:
一种是对明文的单个位(或字节)进行运算,称为流加密,也称序列加密。
另一种是把明文信息划分成不同的组(或块)结构,分别对每个组(或块)进行加密和解密,称为分组加密。
非对称密码体制
非对称密码体制的保密通信模型如下体所示。**非对称密码体制与对称密码体制相对,其主要的区别在于:非对称密码体制的加密密钥和解密密钥不相同,分为两个密钥,一个公开,一个保密。公开的密钥称为公钥,保密的密钥称为私钥。**因此,非对称密码体制也称为公钥密码体制。非对称密码体制使得发送者和接收者无密钥传输的保密通信成为可能,弥补了对称密码体制的缺陷。非对称密码体制的保密通信模型:
在非对称密码体制中,公钥和私钥均可用于加密和解密操作,但它与对称密码体制不同。公钥与私钥分属通信双方,一份消息的加密和解密需要公钥与私钥共同参与。公钥加密则需要私钥解密,反之,私钥加密则需要公钥解密。
相关文章推荐
- C#对称加密(AES加密)每次生成的结果都不同的实现思路和代码实例
- PHP MySQL应用中使用XOR运算加密算法分享
- Javascript实现的SHA-256加密算法完整实例
- 使用openssl实现rsa非对称加密算法示例
- php加密算法之实现可逆加密算法和解密分享
- JavaScript SHA512&SHA256加密算法详解
- php对称加密算法示例
- PHP中对各种加密算法、Hash算法的速度测试对比代码
- .NET中的DES对称加密详解
- java不可逆加密算法之md5加密算法使用示例
- 分享Java常用几种加密算法(四种)
- python使用rsa加密算法模块模拟新浪微博登录
- 非对称加密RSA算法实现
- Web前端慢加密
- 数字证书
- IBM的MARS加密算法实现
- 基于RSA的网站登录密码的加密传输
- 即时通讯 - Android、iOS、J2EE服务端的非对称加密传输数据
- 即时通讯 - 如何保证消息内容不被监听
- sms4的简单实现(C语言版)