常见的密码算法可分为对称加密算法、非对称加密算法和哈希算法(散列函数) 三大类,各自应用场景不同,核心功能也有差异:
一、对称加密算法(加密 / 解密用同一密钥)
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。在对称加密算法中,数据发送方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
基于对称密钥的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5、Blowfish、SM1、SM4、SM7、祖冲之密码(ZUC)等。
1.DES
DES(Data Encryption Standard)数据加密标准算法,DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。
2.3DES
3DES(Triple DES),密钥长度:168 位(实际有效 112 位,因存在中间相遇攻击),该算法的加解密过程分别是使用三组56位的密钥对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。
3.AES
- 1.特点:高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法。
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。 - 2.应用:数据传输:AES算法可用于保护在传输过程中的敏感信息,如电子邮件、文件传输和网站通信。
存储介质:AES算法可用于保护存储介质上的数据。
4.SM1算法
- 1.特点:SM1是一种分组密码算法,分组长度和密钥长度均为128比特。该算法未公开,仅以IP核的形式存在于芯片中,具有较高的安全性。
- 2.应用:采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、门禁卡、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
5.SM4算法
- 1.特点:SM4是一种分组密码算法,分组长度和密钥长度同样为128比特。该算法实现公开,具有加解密速度快、消耗资源少的特点。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
- 2.应用:主要用于大数据量的加密和解密,如网络安全领域中的网络传输和存储敏感数据加密,物联网领域中的设备间通信加密,以及区块链领域中的交易安全保护等。
6.SM7算法
- 1.特点:SM7算法是一种分组密码算法,分组长度为128比特,密钥长度为128比特。
- 2.应用:适用于非接触式IC卡应用,包括身份识别类应用(如门禁卡、工作证、参赛证)、票务类应用(如大型赛事门票、展会门票)以及支付与通卡类应用(如积分消费卡、校园一卡通、企业一卡通等)。
7.ZUC算法
- 1.特点:祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。
- 2.应用:可适用于3GPP LTE通信中的加密和解密,为移动通信提供安全保障。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。
二、非对称加密算法(加密 / 解密用不同密钥:公钥 + 私钥)
非对称加密算法需要两个密钥: 公开密钥 和私有密钥 。
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:
- 甲方生成一对密钥,并将其中的一把作为公用密钥向其它方公开;
- 得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;
- 甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
- 另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
- 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快、保密性比较好,它消除了最终用户交换密钥的需要。
对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
常用算法:RSA、RSA1024、RSA2048、 Elgamal、背包算法、Rabin、D-H、 ECC(椭圆曲线加密算法)、SM2。
2.1 RSA(Rivest-Shamir-Adleman)
背景:
- 1977 年由 Ron Rivest 等三人设计,是全球首个实用的非对称加密算法,至今仍是应用最广泛的非对称算法之一。
核心原理:
- 基于 **“大整数因式分解” 的数学难题 **(即:已知两个大质数 p 和 q,容易计算其乘积 n=p×q;但已知 n,极难反推出 p 和 q)。
- 密钥生成:
随机选择两个大质数 p 和 q,计算 n=p×q(n 为 “公钥 modulus”,是公钥的核心部分)。
计算欧拉函数 φ(n)=(p-1)(q-1),选择一个整数 e(1<e<φ(n),且 e 与 φ(n) 互质),e 作为 “公钥指数”。
计算 d(d 是 e 的模 φ(n) 逆元,即 e×d ≡ 1 mod φ(n)),d 作为 “私钥指数”。
公钥为 (e, n),私钥为 (d, n)。 - 加密 / 解密:
加密:密文 C = 明文 M^e mod n(M < n)。
解密:明文 M = 密文 C^d mod n。
特点:
- 优点:安全性高:只要 n 的长度足够(如 2048 位以上),当前技术无法通过因式分解破解。
应用成熟:支持所有主流平台,可同时实现 “加密” 和 “签名”(私钥签名,公钥验签)。 - 缺点:速度慢:大整数幂运算和模运算耗时,1024 位 RSA 加密速度比 AES-256 慢约 1000 倍。
密钥长度增长快:要抵御量子计算攻击,需将密钥长度提升至 4096 位甚至 8192 位,进一步降低速度。
应用场景:
- 密钥分发:HTTPS 中,服务器用 RSA 公钥加密 “对称密钥”(AES 密钥),传递给客户端(避免对称密钥明文传输)。
- 身份认证:数字签名(如软件签名、电子合同、区块链账户签名)、SSH 登录(服务器公钥认证)。
- 数据加密:少量敏感数据加密(如密码、验证码),不适合大量数据。
2.2 ECC(Elliptic Curve Cryptography,椭圆曲线密码学)
背景:
- 1985 年由 Neal Koblitz 和 Victor Miller 分别提出,2004 年被 NIST 纳入标准,是当前非对称加密的 “后起之秀”,逐步替代 RSA。
核心原理:
- 基于 **“椭圆曲线上离散对数” 的数学难题 **(即:在椭圆曲线 y² = x³ + ax + b 上,已知基点 G 和点 Q = k×G,极难反推出整数 k)。
密钥生成:
选择一条符合安全标准的椭圆曲线(如 NIST P-256、secp256k1)和基点 G。
随机选择私钥 k(一个大整数),计算公钥 Q = k×G(椭圆曲线上的点)。
加密 / 解密:
通过 “椭圆曲线加法” 和 “点乘” 实现,过程比 RSA 更复杂,但数学安全性更高。
特点:
- 优点(核心优势):
1、“同等安全下,密钥长度极短”:例如,256 位 ECC 的安全性相当于 3072 位 RSA(NIST 官方结论),但密钥长度仅为 RSA 的 1/12,运算速度比 RSA 快 2-5 倍。.
2、抗量子计算能力更强:相比 RSA,ECC 抵御量子计算攻击的能力更优(需更长密钥,但增长幅度小于 RSA)。
3、资源占用低:适合移动设备(手机、物联网设备)、区块链(比特币、以太坊用 secp256k1 曲线)等资源受限场景。 - 缺点:
算法实现复杂(需严格遵循椭圆曲线参数),早期兼容性较差(现已普及)。
应用场景:
- 移动互联网:HTTPS(主流浏览器已支持 ECC 证书)、5G 通信加密。
- 物联网(IoT):智能设备、传感器的身份认证和数据加密(低功耗、短密钥)。
- 区块链:比特币、以太坊的账户私钥(256 位 ECC 私钥,如 “助记词” 对应私钥)。
2.3 SM2
背景:
- SM2非对称加密算法。由国家密码管理局于2010年12月17日发布。基于椭圆曲线密码的公钥密码算法标准,其密钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。
- SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分。
- SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。随着密码技术和计算技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。SM2算法在安全性、性能上都优于RSA算法。
核心原理
基于 “椭圆曲线公钥密码体制”,本质是 ECC 的 “中国定制版”,但在曲线参数、签名格式、密钥交换流程上做了优化,更符合我国密码标准。
核心区别于通用 ECC:
- 采用自主定义的椭圆曲线:y² = x³ + ax + b(a、b为特定常数,如 SM2 推荐曲线的a = -3);
- 签名算法支持 “用户标识(ID)”:签名时需加入用户 ID 信息,增强身份关联性;
- 密钥交换协议更完善:定义了明确的双向认证流程,避免中间人攻击。
优势与局限
- 优势:
1、自主可控,无国外专利依赖,保障国家信息安全;
2、与 SM3(哈希)、SM4(对称)协同使用,形成 “SM2+SM3+SM4” 的国产化安全方案,适配国内软硬件(如国产 CPU、操作系统)。 - 局限:
1、国际兼容性较弱:国外多数系统(如部分浏览器、服务器)默认不支持 SM2,需额外安装插件或配置;
2、生态成熟度仍在提升:国内厂商已逐步完成 SM2 适配,但部分老旧系统迁移成本较高。
应用场景
SM2 目前已在我国政务、金融、通信、能源等关键领域强制或推荐使用:
- 政务领域:电子政务平台的身份认证、电子印章、公文加密传输;
- 金融领域:银行 U 盾、移动支付的身份验证、交易签名(替代 RSA 保障支付安全);
- 通信领域:5G 网络的安全接入、VPN 加密隧道的密钥协商;
- 物联网领域:智能设备(如传感器、摄像头)的轻量级身份认证(因密钥短、效率高);
- 电子认证:数字证书认证机构(CA)签发的 SM2 数字证书(替代 RSA 证书)。
三、哈希算法(散列函数,不可逆,输出固定长度哈希值)
哈希算法(Hash Algorithm)是一种将任意长度的输入数据(称为 “消息”)映射为固定长度输出(称为 “哈希值”“摘要” 或 “指纹”)的不可逆数学函数。其核心特性包括 固定输出长度、不可逆性(无法从哈希值反推原始数据)、抗碰撞性(难以找到两个不同输入得到相同哈希值)和 雪崩效应(输入微小变化导致输出剧烈变化),广泛用于数据校验、密码存储、数字签名等场景。
常见的消息摘要算法:MD2、MD4、MD5、SHA-1、SHA-256、RIPEMD128、RIPEMD160、SM3等。
3.1MD
这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron Rivest(RSA公司)在1992年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5 都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
目前在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为 .md5或.md5sum),这样接收者在接收到文件后,就可以利用与 SFV 类似的方法来检查文件完整性,目前绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,另外,它也是目前计算机犯罪中数据取证的最常用算法。与MD5 相关的工具有很多,如 WinMD5等。
3.2 SHA
SHA1、SHA256、SHA384、SHA512
SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
目前SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在目前互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。
3.3 SM3
背景:
SM3 算法全称为 “SM3 密码杂凑算法”,是中国国家密码管理局发布的一种密码杂凑算法。SM3 算法在 2006 年由中国国家密码管理局正式发布,它基于 MD5 算法并对其进行了改进,以提高安全性。
核心特性:
- 输出长度:固定 256 位(32 字节),与 SHA-256 兼容,便于工程实现。
- 计算原理:基于 “迭代压缩结构”,采用 Merkle-Damgård 结构,包含消息扩展、压缩函数等模块,抗碰撞性、雪崩效应均达到国际先进水平。
- 安全性:至今无已知有效攻击,通过了中国及国际多项安全测试,抗量子攻击潜力与 SHA-256 相当。
- 合规性:在中国境内,涉及政务、金融、能源、交通等关键领域的信息系统,若需使用哈希算法,SM3 是首选或强制标准(如电子政务签名、社保卡加密、区块链(如中国数字人民币)的哈希校验)。
工作原理
- 消息填充:首先对输入的消息进行填充,使其长度变为 512 的倍数。填充方法是在消息末尾添加一个 “1” 位,然后添加一定数量的 “0” 位,最后再添加 64 位的消息长度。例如,若输入消息为 “abc”,其在 ASCII 中的十六进制表示为 0x61 0x62 0x63,长度为 24 位。先添加一个 “1” 位变为 0x61 0x62 0x63 0x80,再添加 416 位的 “0”,最后添加 64 位表示消息长度 24 位的十六进制数 0x0000000000000018,最终填充后的消息为 0x61 0x62 0x63 0x80 加上 52 个 0x00 再加上 0x0000000000000018。
- 消息扩展:将填充后的消息分为 512 位的块,然后进行消息扩展,将每个 512 位的消息块扩展为 132 个 32 位的字。具体是先将每个 512 位的消息块分成 16 个 32 位的字 W (0) 到 W (15),再通过特定公式 W (j)=P1 (W (j-16)^W (j-9)^ROTL (W (j-3),15))^ROTL (W (j-13),7)^W (j-6) 扩展为 68 个字 W (16)-W (67),最后根据 W (j) 生成 W’(j)=W (j)^W (j+4),W’共 64 个字,和 W 合起来共 132 个字。
- 压缩函数:将消息块与初始的 IV(初始向量)通过非线性变换进行压缩,经过 32 轮迭代,每轮使用扩展后的消息字和常量进行混合运算。初始化寄存器使用 8 个初始向量 IV,即 A = 0x7380166F,B = 0x4914B2B9,C = 0x172442D7,D = 0xDA8A0600,E = 0xA96F30BC,F = 0x163138AA,G = 0xE38DEE4D,H = 0xB0FB0E4E。每轮通过如 SS1 = ROTL (ROTL (A,12)+E+ROTL (T (0),0),7),SS2 = SS1^ROTL (A,12),TT1 = FF (A,B,C,j)+D+SS2+W’(j),TT2 = GG (E,F,G,j)+H+SS1+W (j) 等运算更新寄存器的值。
- 迭代运算:将压缩后的结果与前一个结果相加,作为下一次压缩的输入,直到所有消息块都处理完毕。
- 输出哈希值:最后将最终的寄存器 A 到 H 的值连接起来,形成一个 256 位的数据,即为 SM3 的哈希值。
典型应用:
- 中国政府电子公文的数字签名与完整性校验;
- 金融行业(如银行、证券)的交易数据哈希存储;
- 国产密码硬件(如 USBKey、加密芯片)的核心哈希模块;
- 中国自主区块链项目(如联盟链)的区块哈希计算。
总结:
- 对称加密:速度快,适合大量数据加密,但密钥分发是个问题。
- 非对称加密:密钥分发安全,但速度慢,适合少量数据加密或数字签名。
- 哈希函数:用于数据完整性校验,不可逆。
- 量子加密:理论上绝对安全,但离实用还远。
- 混合加密:兼顾速度和安全,是主流选择。
1181

被折叠的 条评论
为什么被折叠?



