在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:
而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。
在加密传输中最初是采用对称密钥方式,也就是加密和解密都用相同的密钥。
1.对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方
2.接收方收到加密后的报文后,结合解密算法使用相同密钥解密组合后得出原始数据。
图示:
非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥(不能公开)才能解密,反之亦然。N 个用户通信,需要2N个密钥。
非对称密钥加密适合对密钥或身份信息等敏感信息加密,从而在安全性上满足用户的需求。
1.甲使用乙的公钥并结合相应的非对称算法将明文加密后发送给乙,并将密文发送给乙。
2.乙收到密文后,结合自己的私钥和非对称算法解密得到明文,得到最初的明文。
图示:
单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应(少量消息位的变化会引起信息摘要的许多位变化)。
单向加密算法常用于提取数据指纹,验证数据的完整性、数字摘要、数字签名等等。
1.发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。
2.接收方将用于比对验证的明文使用相同的单向加密算法进行加密,得出加密后的密文串。
3.将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。
图示:
MD5、sha1、sha224等等
密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密
常见的密钥交换方式有下面两种:
将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用
DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。
DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。
如:
安全性
在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。
答案:使用公钥证书
公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合
用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能
签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。
公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。
1.客户A准备好要传送的数字信息(明文)。(准备明文)
2.客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。(准备摘要)
3.客户A用CA的私钥(SK)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。(用私钥对数字信息进行数字签名)
4.客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。 (生成密文)
5.客户A用双方共有的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。(非对称加密,用公钥对DES密钥进行加密)
6.银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。(用私钥对DES密钥解密)
7.银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。(解密文)
8.银行B用双方共有的公钥(PK)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。(用公钥解密数字签名)
9.银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。(对比信息摘要和信息)
答案是没法保证CA的公钥没有被篡改。通常操作系统和浏览器会预制一些CA证书在本地。所以发送方应该去那些通过认证的CA处申请数字证书。这样是有保障的。
但是如果系统中被插入了恶意的CA证书,依然可以通过假冒的数字证书发送假冒的发送方公钥来验证假冒的正文信息。所以安全的前提是系统中不能被人插入非法的CA证书。
END
❷ 3des加密原理
使用3Des加密算法前,我们需要了解一下当前主流的加密模式:单向加密和双向加密,两者最大的区别在于加密的密文是否具有可逆性。
单向加密:将需要加密的数据进行加密,并且密文不可进行解密,像我们常用的加密算法MD5就属于这种。
双向加密:和单向加密不同的是可以通过某些方式进行加解密的操作,其中分为对称加密和非对称加密。
对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号,本文介绍的3Des加密就属于这种。
非对称加密:通过一组包含公钥和私钥的密码来加密解密,用公钥加密,私钥解密,首推的就是RSA加密
---------------------------------------------------------------------------------------------------------------------------------------
3Des加密算法,由于可以逆推原文,所以主要通过本地的唯一密钥来保证数据的安全性,我这边通过生成随机的256位加密字符串存储在本地,代码读取时将其通过md5加密成32位的字符串(由于本地有原始密钥,不必担心md5加密不可逆),最后以这32位加密字符串作为密钥进行加解密的操作。
❸ 什么是单向加密什么是双向加密两者有何区别哪个更安全
http://topic.csdn.net/t/20050425/17/3965579.html在现阶段,有两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将可以直接理解的明文数据加密为不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。双向加密适合于隐秘通信,例如,用户在网上购物时,需要向网站提交信用卡密码,用户当然不希望自己的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,用户希望自己的信用卡密码是通过加密以后,再在网络传送,因此网站接收到用户的数据以后,通过解密算法就可以得到准确的信用卡账号。单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。单向加密一般用于数据库中用户信息的加密。当用户创建一个新的账号或者密码时,他的信息不是直接保存到数据库中,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。
❹ 常见加密算法原理及概念
在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:
而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。
对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,或者利用第三方平台传递给对方,一旦这过程出现了密钥泄露,不怀好意的人就能结合相应的算法拦截解密出其加密传输的内容。
对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特定,但是也有着密钥单一、密钥管理困难等缺点。
常见的对称加密算法有:
DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。
3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。
AES:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。
Blowfish:Blowfish算法是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串。
非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。
下图为简单非对称加密算法的常见流程:
发送方Bob从接收方Alice获取其对应的公钥,并结合相应的非对称算法将明文加密后发送给Alice;Alice接收到加密的密文后,结合自己的私钥和非对称算法解密得到明文。这种简单的非对称加密算法的应用其安全性比对称加密算法来说要高,但是其不足之处在于无法确认公钥的来源合法性以及数据的完整性。
非对称加密算法具有安全性高、算法强度负复杂的优点,其缺点为加解密耗时长、速度慢,只适合对少量数据进行加密,其常见算法包括:
RSA :RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。
DSA :数字签名算法,仅能用于签名,不能用于加解密。
DSS :数字签名标准,技能用于签名,也可以用于加解密。
ELGamal :利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。
单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。常见的算法包括:MD5、sha1、sha224等等,其常见用途包括:数字摘要、数字签名等等。
密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密,常见的密钥交换方式有下面两种:
1、公钥加密,将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用;
2、Diffie-Hellman,DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。DH算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。
如:
在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。
公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能,其组成包括:签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。
PKI采用证书管理公钥,通过第三方可信任CA中心,把用户的公钥和其他用户信息组生成证书,用于验证用户的身份。
公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。
CA证书认证的流程如下图,Bob为了向Alice证明自己是Bob和某个公钥是自己的,她便向一个Bob和Alice都信任的CA机构申请证书,Bob先自己生成了一对密钥对(私钥和公钥),把自己的私钥保存在自己电脑上,然后把公钥给CA申请证书,CA接受申请于是给Bob颁发了一个数字证书,证书中包含了Bob的那个公钥以及其它身份信息,当然,CA会计算这些信息的消息摘要并用自己的私钥加密消息摘要(数字签名)一并附在Bob的证书上,以此来证明这个证书就是CA自己颁发的。Alice得到Bob的证书后用CA的证书(自签署的)中的公钥来解密消息摘要,随后将摘要和Bob的公钥发送到CA服务器上进行核对。CA在接收到Alice的核对请求后,会根据Alice提供的信息核对Bob的证书是否合法,如果确认合法则回复Alice证书合法。Alice收到CA的确认回复后,再去使用从证书中获取的Bob的公钥加密邮件然后发送给Bob,Bob接收后再以自己的私钥进行解密。
❺ 非对称加密和对称加密
非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:
1、加密和解密过程不同
对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。
2、加密解密速度不同
对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
3、传输的安全性不同
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。
非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。
一、对称加密算法
指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
DES(Data Encryption Standard) :数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES) :是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard) :高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
二、非对称加密算法
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。常见的非对称加密算法:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal。
RSA: 由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm) :数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography) :椭圆曲线密码编码学。
ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:
(1)抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。
(2)计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
(3)存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。
(4)带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。
三、散列算法(Hash算法---单向加密算法)
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。
Hash算法: 特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
单向散列函数一般用于产生消息摘要,密钥加密等,常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
MD5(Message Digest Algorithm 5): 是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
SHA(Secure Hash Algorithm): 可以对任意长度的数据运算生成一个160位的数值;
SHA-1与MD5的比较
因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
(1)对强行供给的安全性:最显着和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^(128)数量级的操作,而对SHA-1则是2^(160)数量级的操作。这样,SHA-1对强行攻击有更大的强度。
(2)对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
四、 加密算法的选择
1.由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
2.对称加密算法不能实现签名,因此签名只能非对称算法。
3.由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
4.在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
那采用多少位的密钥呢?
RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
❻ 什么是AES算法
加密算法分为单向加密和双向加密。
单向加密 包括 MD5 , SHA 等摘要算法。单向加密算法是不可逆的,也就是无法将加密后的数据恢复成原始数据,除非采取碰撞攻击和穷举的方式。像是银行账户密码的存储,一般采用的就是单向加密的方式。
双向加密 是可逆的,存在密文的密钥,持有密文的一方可以根据密钥解密得到原始明文,一般用于发送方和接收方都能通过密钥获取明文的情况。双向加密包括对称加密和非对称加密。对称加密包括 DES 加密, AES 加密等,非对称加密包括 RSA 加密, ECC 加密。
AES 算法全称 Advanced Encryption Standard ,是 DES 算法的替代者,也是当今最流行的对称加密算法之一。
要想学习AES算法,首先要弄清楚三个基本的概念:密钥、填充、模式。
密钥是 AES 算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。
AES支持三种长度的密钥:
128位,192位,256位
平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。从安全性来看,AES256安全性最高。从性能来看,AES128性能最高。本质原因是它们的加密处理轮数不同。
要想了解填充的概念,我们先要了解AES的分组加密特性。AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。
这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。
但是这里涉及到一个问题:
假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。AES在不同的语言实现中有许多不同的填充算法,我们只举出集中典型的填充来介绍一下。
不做任何填充,但是要求明文必须是16字节的整数倍。
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}
需要注意的是,如果在AES加密的时候使用了某一种填充方式,解密的时候也必须采用同样的填充方式。
AES的工作模式,体现在把明文块加密成密文块的处理过程中。AES加密算法提供了五种不同的工作模式:
ECB、CBC、CTR、CFB、OFB
模式之间的主题思想是近似的,在处理细节上有一些差别。我们这一期只介绍各个模式的基本定义。
电码本模式 Electronic Codebook Book
密码分组链接模式 CipherBlock Chaining
计算器模式 Counter
密码反馈模式 CipherFeedBack
输出反馈模式 OutputFeedBack
如果在AES加密的时候使用了某一种工作模式,解密的时候也必须采用同样的工作模式。
AES加密主要包括两个步骤: 密钥扩展 和 明文加密 。
密钥扩展过程说明(密钥为16字节):
函数g的流程说明:
轮常量(Rcon)是一个字,最右边三个字节总为0。因此字与Rcon相异或,其结果只是与该字最左的那个字节相异或。每轮的轮常量不同,定位为Rcon[j] = (RC[j], 0, 0, 0)。(RC是一维数组)
RC生成函数:RC[1] = 1, RC[j] = 2 * RC[j – 1]。
因为16字节密钥的只进行10轮的扩展,所以最后生成的RC[j]的值按16进制表示为:
十轮的密钥扩展后,就能生成44个字大小的扩展密钥。扩展后的密钥将用于AES对明文的加密过程。
S盒是16×16个字节组成的矩阵,行列的索引值分别从0开始,到十六进制的F结束,每个字节的范围为(00-FF)。
进行字节代替的时候,把状态中的每个字节分为高4位和低4位。高4位作为行值,低4位作为列值,以这些行列值作为索引从S盒的对应位置取出元素作为输出,如下图所示:
S盒的构造方式如下:
(1) 按字节值得升序逐行初始化S盒。在行y列x的字节值是{yx}。
(2) 把S盒中的每个字节映射为它在有限域GF中的逆;{00}映射为它自身{00}。
(3) 把S盒中的每个字节的8个构成位记为(b7, b6, b5, b4, b3, b2, b1)。对S盒的每个字节的每个位做如下的变换:
ci指的是值为{63}的字节c的第i位。
解密过程逆字节代替使用的是逆S盒,构造方式为
字节d={05}。
逆向行移位将状态中后三行执行相反方向的移位操作,如第二行向右循环移动一个字节,其他行类似。
要注意,图示的矩阵的乘法和加法都是定义在GF(2^8)上的。
逆向列混淆原理如下:
轮密钥加后的分组再进行一次轮密钥加就能恢复原值.所以,只要经过密钥扩展和明文加密,就能将明文加密成密文,进行解密的时候,只需要进行逆向变换即可。
图[AES加密算法的流程]中还需要注意,明文输入到输入状态后,需要进行一轮的轮密钥加,对输入状态进行初始化。 前9轮的加密过程,都需要进行字节替代、行移位、列混淆和轮密钥加,但是第10轮则不再需要进行列混淆。
进行解密的时候,需要进行逆向字节替代,逆向行移位、逆向列混淆和轮密钥加。
❼ SSL常见加密算法
一、加密算法常见分类
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
1)对称加密算法
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
2)非对称加密算法
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
3)单向加密算法
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)
二 .特点
DES,3DES,AES 加密数据,只有一个密码,密钥长度不同。
PBE Password-based encryption 对称加密中基于密码加密,口令用户掌管不借助任何物理媒介,采用随机数杂凑多重加密保证数据安全。
RSA 即能用户数据加密也能用于数字签名,同时有公钥和私钥。数字签名的意义在于,对传输过来的数据进行校验确保传输过程中不被修改。
单向加密中MD5,SHA,HMAC为非可逆加密,单向散列一般用于产生信息摘要。通常作为加密的基础。单向加密主要用途为校验传输过程中是否被修改过。
三.算法比较
在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。
在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。
-从速度上:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。
四、参考
http://www.willrey.com/support/ssl_DES.html