什么是国密算法?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。他同样更适合国产硬件环境,被广泛用于中国的电子政务、金融、可信计算等应用。 ...

March 22, 2026 · 1 min · santu

什么是垂直越权,如何防止?

典型回答 垂直越权(垂直权限漏洞)是指普通用户通过不当手段获取比其当前角色更高权限的访问,进而能够执行通常只对管理员或特权用户开放的操作。 比如说,在一个在线银行系统中,普通用户A尝试执行只有管理员权限的操作,例如修改系统设置或访问其他用户的账户信息。若系统未能正确限制这些操作,用户A可能能够通过直接调用相关的API或修改请求参数来获取更高的权限。 其实,如果一个系统被垂直越权了,就说明这个系统的权限管理做的不到位,即在用户的每个操作之前,并没有去严格的校验是否有权限。 一般来说,如果系统中有不同的角色,那么通常采用RBAC( 基于角色的访问控制), 在RBAC模型中,用户被分配到一个或多个角色,而每个角色拥有特定的权限。用户通过角色来获取相应的访问权限,系统根据用户所拥有的角色来决定其可以执行的操作。 有了RBAC之后,就可以更加好的管控不同的角色所有用的权限了,但是同时,也需要注意,权限和角色的授予需要遵循一个** 最小权限原则 ,** 即只给用户授予可以完成其工作所需的最低权限,避免授予多余的特权。这可以减少潜在的权限提升攻击面。

March 22, 2026 · 1 min · santu

留言给博主