什么是国密算法?SM2_SM4_SM3有什么区别?
典型回答 国密算法(SM系列算法)是中国国家密码管理局(SCA,State Cryptography Administration)制定的国产商用密码算法标准,广泛应用于金融、政务、电信等领域,主要用于数据加密、身份认证、电子签名等场景。 本文主要介绍的都是SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。 SM国密算法主要包括以下几种: 国密对称加密算法:SM4 SM4 是中国制定的分组对称加密算法,用于数据加密和解密。采用128位密钥,分组长度128位(16字节),采用32轮迭代加密方式,安全性较高,适用于无线局域网标准(WAPI)、移动支付、金融行业等。 相比常见的AES加密算法,AES支持128/192/256位,SM4固定128位。AES-128和SM4的安全性相当,SM4更适合国产软硬件环境。 1 2 3 4 5 6 7 String content = "Hollistest中文"; // 随机生成密钥 SymmetricCrypto sm4 = SmUtil.sm4(); String encryptHex = sm4.encryptHex(content); String decryptStr = sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8); 国密非对称加密算法:SM2 SM2 是基于椭圆曲线密码学(ECC, Elliptic Curve Cryptography)的公钥密码算法,是一种典型的非对称加密算法。场用于数据加密、数字签名和身份认证。 SM2相比传统RSA算法更高效,密钥长度更短但安全性更高。SM2使用256位,RSA通常为2048/3072位(更长)。SM2签名和解密速度比RSA快,适用于资源受限设备(如移动终端)。SM2主要用于电子认证、数字签名、SSL/TLS安全传输等场景。 1 2 3 4 5 6 String text = "Hollis测试aaaa"; SM2 sm2 = SmUtil.sm2(); // 公钥加密,私钥解密 String encryptStr = sm2.encryptBcd(text, KeyType.PublicKey); String decryptStr = StrUtil.utf8Str(sm2.decryptFromBcd(encryptStr, KeyType.PrivateKey)); 国密哈希算法:SM3 SM3 是中国自主研发的密码散列算法(Hash算法),类似于SHA-256。他同样更适合国产硬件环境,被广泛用于中国的电子政务、金融、可信计算等应用。 ...