加解密算法概述
前言
密码由来已久,相传公元前405年,雅典和斯巴达之间的伯罗奔尼撒战争最早出现密码,通过杂乱无章的字母拼接成一段话就是要传递的情报。近代战争中敌我双方总会拦截对方的电报,进行破译来获取情报。密码的传输就涉及到对数据内容的加密和解密,双方商量好加解密的方式,一方通过规定对传输的内容加密,另一方获取到密文以后根据规则进行解密,就能获取到对方要传输的真实内容,而其他人并不知道他们双方的约定,所以中途即使拦截拿到了密文也不知道真正要表达的意思,这样保证传输内容的安全。现在有了专门的学科——密码学,研究编制密码和破译密码的技术。
如今是互联网信息时代,每时每刻都有非常庞大的数据在网络中传输,有些敏感的数据需要进行加密来保证安全,比如:用户名密码,必须要进行加密处理,否则被其他人获取了会对造成不可估量的损失。
概述
加解密算法
加解密算法一般分为:对称加密算法 和 非对称加密算法
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
非对称加解密需要两个密钥,分别为:公钥 (publicKey) 和 私钥 (privateKey)。公钥和私钥是成对的,可以使用其中一个密钥进行加密,另外一个进行解密。
国密算法
上面提到的几种算法属于国际算法,是美国安全局NSA制定的一系列商用算法,用于加密不涉及国家秘密内容,但是也具有一定价值的数据加密算法,例如政务信息、公司内部资料等。我们国内也有自己的算法,称为国密算法,国密算法是国家密码管理局制定的标准的一系列的算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位,按照分类也分为对称加密算法、非对称加密算法、摘要加密算法等。
-
SM1 为对称加密。其加密强度与 AES 相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。采用该算法已经研制了系列芯片、智能 IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
-
SM2 为非对称加密,基于 ECC。该算法已公开。由于该算法基于 ECC,故其签名速度与秘钥生成速度都快于 RSA。ECC 256位( SM2采用的就是 ECC 256位的一种)安全强度比 RSA 2048位高,但运算速度快于 RSA。
-
SM3 消息摘要。可以用 MD5 作为对比理解。该算法已公开。校验结果为256位。
-
SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
应用
总体
对称加解密,顾名思义就是通过已知密钥对数据进行加密,再用同一个密钥对数据解密即可,适合任意数据加解密,例如:字符串,文件等。实现比较简单,加解密计算量小,运算速度比较快,但是因为加密和解密使用同一个密钥,如果此密钥泄露,那么其他人就可以轻松破译密文,对密钥的存储安全性要求高,避免密钥泄露。
非对称加解密,就是加密和解密使用不同的密钥,分别为公钥和私钥。与对称加解密相比,实现更复杂,安全性更高,但是加解密计算复杂,速度相应的也就比较慢,特别是大文件加密传输。而且非对称加解密算法可以应用与信息加解密,登录认证,数字签名,数字证书等方面。
对称加解密和非对称加解密各有优缺点,各应用可以根据自身合理选择,也可以组合使用,比如大文件传输可以通过非对称加解密对对称加解密的密钥进行加密,文件数据通过对称加解密完成,其中需要考虑的是对称加解密密钥的存储,传输方式。
对称加解密
对称加解密常用的有 SM4、AES、3DES、DES
DES 加解密算法是最古老的算法之一,使用56位密钥,适合简单应用,安全要求不高的应用使用,由于其密钥长度短,现代计算机已经可以暴力破解了。
3DES 加解密算法是 DES 的加强版,它将 DES 算法三次应用于每个数据块,比 DES 密钥相对更长,采用128位密钥,安全性更高,但是计算速度相对比较慢,之前广泛应用于金融行业支付系统,但是目前研究人员也发现 3DES 存在安全漏洞,美国国家标准技术研究院在2019年发布的指南草案中宣布弃用该算法。
AES 加解密算法即高级加密标准,采用分组加密体制,相比 DES,3DES 加解密算法,安全性更高,速度更快,而且密钥长度可采用128位,192位以及256位,但是一般使用128位,若使用256位密钥会受到 jdk 的限制。目前 AES 是广泛应用的对称加解密算法,包括:无线网络安全、处理安全性和文件加密、SSL 和 TLS 协议、Wi-Fi 安全性、移动应用加密、VPN (虚拟专用网) 等。
SM4 是在2021年已经被我国国家商用密码管理局确定为管家密码行业标准,在国内广泛使用在 WAP 无线网络标准中,还有政府系统的数据传输加密。
非对称加解密
非对称加解密常用的有 SM2、RSA
RSA 加解密算法是迄今为止,最广泛的非对称加解密算法,它的效力在于它依赖的 “素数分解” 方法。基本上,此方法涉及两个巨大的随机质数,并将这些数字相乘以创建另一个巨数。这里的难题是从这个巨大的乘法数确定原始素数。事实证明,对于当今的超级计算机,这个难题实际上是不可能的。2010年,一组研究人员进行了研究,他们花费了超过1500年的计算时间(分布在数百台计算机上)来破解 RSA-768 位密钥,远低于使用的标准2048位 RSA 密钥今天。足见 RSA 加解密算法安全性之高,但是它同样具有非对称加解密算法的缺点,计算复杂,速度较低。
SM2 是一种基于椭圆曲线的密码(ECC),用来替换RSA加密算法的。相比 RSA,复杂度更高,同等安全强度下,密钥长度较短,运算效率都要更优,但是国密算法尚未实现广泛的兼容性,在主流浏览器,操作系统的终端环境中不受信任,面向互联网的产品引用中采用国密算法将无法满足可用性、易用性和全球通用性的需求。
实现
加解密具体实现方式,在项目中的使用方式后面分为两篇文章介绍
对于算法的使用最简单的当然是使用现成的,不用重复造轮子,当然若是想要详细了解加解密原理,可以尝试研究源码,现成的有Hutool 提供的工具类,使用简单,但是有些示例有误😅,而且不一定适用实际开发,后面会根据时间开发的使用列举一些示例仅供参考。