对称加密算法
理论上说对称加密算法,才是我们真正说的加密算法。所谓对称加密算法,通俗的讲,就是使用密钥加密,再使用密钥解密的加密算法的总称。也就是平时我们说到加密算法,脑子里第一个跳出来的加密方式一般都是对称加密算法。上面将的base64其实也是一种“对称加密算法”,只是其密钥公开了而已。
通讯模型
同样的场景:客户端要将数据data发给服务器端。
客户端对使用密钥key,对数据data加密,生成加密串C,通过网络将C传输为服务器端,服务器端,使用密钥key对C解密,获取数据data,做自己的业务逻辑。
简单直接的一种加密方式,与摘要算法不同的地方是,加密过程其是双向的,C由data加密而来,同样可以解密获得data,前提条件是加密解密时的key相同。而摘要算法无法从C解密得到data。
加密过程简单,那么其在对抗通信中面临的四种威胁的作用有怎么样呢:
- 截获:这么在网络中传输的内容为密文,即使攻击者截获了报文,由于没有密钥,也无法解析。所以,这次对称加密算法在防范截获威胁方面有这很大的优势。
- 中断:和摘要算法一样,无法防范。
- 篡改:由于数据是密文传输的,攻击者,无法解析,更无法伪造了。所以,可以防范。
- 伪造:对于数据的伪造,和摘要算法一样,可以防范,但对于伪造的发送方,对称加密算法和摘要算法一样,比较的无力。
截获 |
中断 |
篡改 |
伪造 |
O |
X |
O |
X |
算法优缺点
对称加密算法有着很多的好处,比较加密速度快,算法简单,安全模型的安全性较高等,但在正式中使用时,却不得不解决一个问题:密钥如何传递。如果将密钥在网络中传递,势必有被截获的风险。由于这个问题的存在,导致单纯的使用对称加密算法的通讯模型,并不是一个通用的模型,只在一些特殊的场合中使用,例如:客户端/服务器端为同一端点,或者线下合作的场景——双方将密钥写入合同中,线下传递。
不过对于密钥,还是建议经常的更换,密钥的破解是一个耗时的过程,长时间不变的密钥,无遗对攻击者创造了破解的机会,当有一天攻击者破解了密钥,灭顶之灾也就来到。
说了这么多的对称加密算法,还没有说对称加密算法有哪些,比较常用的对称加密算法有DES/3DES/AES/IDEA/RC4/RC2等。其加密强度,可以从其支持的密钥长度看出,密钥越长,加密强度越好;同时,加密过程越慢。
对称加密算法 |
密钥长度 |
DES |
56 |
3DES |
112/168 |
AES |
128/192/256 |
IDEA |
128 |
RC2 |
可变密钥长度,通过调整长度控制加密强度 |
可变密钥长度,通过调整长度控制加密强度 |
相关推荐
300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码
用C语言实现的AES加密解密算法,用C语言实现的AES加密解密算法
经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
字符串加密解密算法
java实现MD5加密解密算法,java源代码~
DES加密解密算法的C语言实现,只要调用函数,即可实现数据的加密解密,我已经在DSP上实现。
RSA 加密解密算法C语言 (含linux)内含代码加实例
VB实现DES加密解密算法已测试通过如有更新另行发布
RSA加密解密算法,相当不错的例子,适合初学者参考
RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学
主要介绍了java实现的RC4加密解密算法,结合具体实例形式分析了java RC4加密解密算法的实现与使用技巧,需要的朋友可以参考下
实现的AES加密解密算法,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥
MD5加密解密算法描述.docMD5加密解密算法描述.docMD5加密解密算法描述.doc
加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密
sun java 3DES加密解密算法
加密算法模块(VC++)-算法源码吧-加密解密算法- C_C++ 加密算法必备,开拓视野和了解相关算法
此资源加密方式包括 MD2, MD5, SHA-1, HAVAL, Tiger, RIPE-MD160, MD5-MAC, HMAC, XOR-MAC, DES,IDEA, WAKE, 3-WAY, TEA, SAFER, Blowfish,SHARK, GOST, CAST-128, Square,Diamond2, Sapphire, RC2, RC5, RC6, MARS,...
主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了java RAS加密解密算法的相关实现技巧,需要的朋友可以参考下
c# 可逆 加密 解密算法
可以运行的C++版RSA加密解密算法,有注释详细