非对称加密有一对钥匙:公钥和私钥。公钥可以给别人,私钥自己藏好。用公钥加密的内容,只有私钥能解开;用私钥签的名,谁都能用公钥验证。SM2 是我国自主研发的非对称加密算法,和国外的 RSA、ECC 类似,但按国密标准来做。国内很多政务、金融、支付系统都要求用 SM2 而不是国外算法。这个小工具就是帮你在本地做 SM2 各种操作的。
主要功能
生成密钥对
点"生成密钥对",工具会在本地生成一对 SM2 公钥和私钥。同时还会算出对应的压缩公钥(把公钥压短一点,有些系统用这个格式)。生成的密钥会自动填到各个输入框里,签名和验签面板也会同步填上。
如果想让生成的密钥可控(比如测试时固定一对),可以在"密码学随机数"那里填一个种子,工具会用这个种子生成密钥。
加密和解密
上面输入框填要加密的内容,公钥填在公钥框里,点"加密",密文出现在下面的结果区。反过来,密文填进输入框,私钥填在私钥框里,点"解密",原文出现。
密文模式可以选 C1C3C2 或 C1C2C3,这是 SM2 密文的两种排列方式,不同系统要求不一样,选错了解不开。国密标准默认用 C1C3C2。
签名和验签
点"签名面板"展开,填好私钥、要签的内容,选好编码格式和选项,点"点击签名",签名值出现在下面。点"验签面板"展开,填公钥、原文、签名值,点"点击验签",会提示验证通过还是失败。
签名面板里还有几个选项:
User ID:签名时用的用户标识,默认是 1234567812345678,这是国密标准里推荐的值
内容编码:待签内容按什么格式解析,可以选 UTF-8、HEX、Base64
SM3 杂凑:勾上表示先对内容做 SM3 哈希再签名(推荐)
DER 编解码:签名值用 DER 格式还是原始格式
从私钥推算公钥
有时候只有私钥,想知道对应的公钥是什么。点"推算公钥",填好私钥,工具会算出对应的公钥来。
复制结果
每个结果框旁边都有"复制"按钮,点一下内容复制走。
适合谁用
做国密合规项目的人,系统要求用 SM2 加密或签名,用它能快速做加解密和签名验签;做政务、金融、支付接口对接的人,对方按国密标准要求传 SM2 密文或签名,这里正好合适;做开发、调试加密逻辑的人,改了参数立刻看到结果变化;学非对称加密的人,生成一对钥匙,试试加密、解密、签名、验签,再跟 RSA 对比着看,直观理解 SM2 的特点。
用起来什么感觉
界面分几块:上面填要处理的内容,中间填参数(私钥、公钥、压缩公钥、随机数、密文模式),再下面是操作按钮,签名和验签面板点按钮展开,最后是输出结果。整个过程在浏览器本地完成,密钥和数据都不会上传到任何服务器,安全。按钮大小合适,颜色分明。手机上按钮会变成两列,方便手指点。不需要安装,打开网页就能使,用完关掉就行。