[{"data":1,"prerenderedAt":489},["ShallowReactive",2],{"tool-content:sm2-encryption":3,"published-tool-content":275},{"id":4,"title":5,"body":6,"category":249,"dataVersion":250,"description":251,"extension":252,"featured":253,"icon":254,"keywords":255,"meta":262,"navigation":253,"path":263,"seo":264,"seoTitle":265,"slug":266,"status":267,"stem":268,"updatedAt":269,"usageTips":270,"__hash__":274},"tools\u002Ftools\u002Fsm2-encryption.md","SM2 公钥加解密工具",{"type":7,"value":8,"toc":229},"minimark",[9,13,17,20,33,36,39,55,58,65,68,72,75,95,98,105,108,111,114,117,127,130,136,156,168,174,177,191,194,198,201,205,208,212,215,219,222,226],[10,11,12],"h2",{"id":12},"什么时候使用",[14,15,16],"p",{},"适合对接明确要求国密 SM2 公钥加密的系统。它不用于签名验签，也不处理证书、PEM 或 ASN.1 密文。",[10,18,19],{"id":19},"快速使用",[21,22,23,27,30],"ol",{},[24,25,26],"li",{},"保持默认 C1C3C2 和未压缩公钥，点击“生成密钥对”。",[24,28,29],{},"加密时保留公钥并输入明文；解密时粘贴密文和配套私钥。",[24,31,32],{},"保存私钥时不要与密文放在同一位置，也不要在不可信设备上处理生产私钥。",[10,34,35],{"id":35},"工具说明",[14,37,38],{},"这个工具使用 SM2 公钥加密、私钥解密 UTF-8 文本，提供两种常见的原始密文排列：",[40,41,42,49],"ul",{},[24,43,44,48],{},[45,46,47],"code",{},"C1C3C2","：默认选择，适合新系统和当前常见接口。",[24,50,51,54],{},[45,52,53],{},"C1C2C3","：用于兼容仍采用旧排列的系统。",[14,56,57],{},"页面默认填入 04 未压缩公钥，用户也可以切换为 02\u002F03 压缩公钥。密钥、C1 和密文都使用原始 Hex 表示，不使用 PEM、JWK 或 ASN.1 封装。",[14,59,60,61,64],{},"SM2 密钥生成、随机临时密钥、加密和解密全部在当前浏览器中完成，不会上传或保存。实现精确使用 ",[45,62,63],{},"sm-crypto-v2@1.15.1","，浏览器环境的随机数来自安全随机源。",[10,66,67],{"id":67},"密钥格式",[69,70,71],"h3",{"id":71},"公钥",[14,73,74],{},"加密支持两种十六进制公钥：",[40,76,77,84],{},[24,78,79,80,83],{},"未压缩公钥：65 字节，以 ",[45,81,82],{},"04"," 开头，后面依次是 32 字节 X 和 32 字节 Y。",[24,85,86,87,90,91,94],{},"压缩公钥：33 字节，以 ",[45,88,89],{},"02"," 或 ",[45,92,93],{},"03"," 开头，后面是 32 字节 X。",[14,96,97],{},"生成密钥对时可以选择页面优先填入哪一种公钥。两种表示对应同一个椭圆曲线点，解密仍使用相同的 32 字节私钥。",[14,99,100,101,104],{},"公钥和私钥输入接受整体 ",[45,102,103],{},"0x"," 前缀以及复制时产生的空格、换行；输出统一为连续小写 Hex。",[69,106,107],{"id":107},"私钥",[14,109,110],{},"私钥固定使用 32 字节 Hex，并且数值必须位于 SM2 曲线的有效私钥范围内。私钥不会写入本地存储，刷新或关闭页面后无法恢复。",[10,112,113],{"id":113},"密文格式",[14,115,116],{},"页面输出原始 Hex 密文，不使用 ASN.1 封装：",[118,119,125],"pre",{"className":120,"code":122,"language":123,"meta":124},[121],"language-text","04 || C1.x || C1.y || C3 || C2\n","text","",[45,126,122],{"__ignoreMap":124},[14,128,129],{},"或者在兼容模式下：",[118,131,134],{"className":132,"code":133,"language":123,"meta":124},[121],"04 || C1.x || C1.y || C2 || C3\n",[45,135,133],{"__ignoreMap":124},[40,137,138,144,150],{},[24,139,140,143],{},[45,141,142],{},"04 || C1.x || C1.y"," 是 65 字节未压缩临时公钥点。",[24,145,146,149],{},[45,147,148],{},"C3"," 是 32 字节完整性摘要。",[24,151,152,155],{},[45,153,154],{},"C2"," 是加密后的正文，长度与 UTF-8 明文字节数相同。",[14,157,158,159,161,162,164,165,167],{},"部分 SM2 库会省略 C1 开头的 ",[45,160,82],{},"。本工具统一输出带 ",[45,163,82],{}," 的格式，解密同时接受带或不带 ",[45,166,82],{}," 的密文。",[14,169,170,171,173],{},"密文输入同样接受整体 ",[45,172,103],{}," 前缀和空白字符，但不接受 ASN.1 DER、Base64 或带算法元数据的封装。",[10,175,176],{"id":176},"安全提示",[40,178,179,182,185,188],{},[24,180,181],{},"每次加密都必须生成新的随机 C1，本工具会自动完成。",[24,183,184],{},"SM2 公钥和私钥必须配套，密文排列也必须与加密端一致。",[24,186,187],{},"C3 校验失败时，页面只返回统一的解密失败，不区分错误私钥、损坏密文或排列不一致。",[24,189,190],{},"不要在不可信设备上处理生产私钥。",[10,192,193],{"id":193},"常见问题",[69,195,197],{"id":196},"c1c3c2-和-c1c2c3-可以自动识别吗","C1C3C2 和 C1C2C3 可以自动识别吗？",[14,199,200],{},"不能可靠自动识别。两种格式没有自描述字段，解密时必须选择加密端实际使用的排列。",[69,202,204],{"id":203},"压缩公钥会降低安全性吗","压缩公钥会降低安全性吗？",[14,206,207],{},"不会。压缩格式只是省略可由 X 和奇偶标识恢复的 Y 坐标，表示的仍是同一个 SM2 公钥点。",[69,209,211],{"id":210},"为什么同样的明文和公钥每次密文不同","为什么同样的明文和公钥每次密文不同？",[14,213,214],{},"SM2 加密每次都会生成新的随机临时密钥和 C1，这是正常且必要的安全属性。",[69,216,218],{"id":217},"支持-sm2-签名或证书吗","支持 SM2 签名或证书吗？",[14,220,221],{},"当前页面只提供公钥加密和私钥解密，不包含签名验签、X.509 证书、密钥交换或 ASN.1 密文。",[69,223,225],{"id":224},"密钥和内容会上传吗","密钥和内容会上传吗？",[14,227,228],{},"不会。密钥生成、加密、解密和复制都在当前浏览器中完成。",{"title":124,"searchDepth":230,"depth":230,"links":231},2,[232,233,234,235,240,241,242],{"id":12,"depth":230,"text":12},{"id":19,"depth":230,"text":19},{"id":35,"depth":230,"text":35},{"id":67,"depth":230,"text":67,"children":236},[237,239],{"id":71,"depth":238,"text":71},3,{"id":107,"depth":238,"text":107},{"id":113,"depth":230,"text":113},{"id":176,"depth":230,"text":176},{"id":193,"depth":230,"text":193,"children":243},[244,245,246,247,248],{"id":196,"depth":238,"text":197},{"id":203,"depth":238,"text":204},{"id":210,"depth":238,"text":211},{"id":217,"depth":238,"text":218},{"id":224,"depth":238,"text":225},"crypto","sm2-raw-hex-v1","面向国密公钥加密生成 SM2 密钥对并处理文本，支持常见 C1C3C2 与旧式 C1C2C3 排列。","md",true,"i-lucide-key-round",[256,257,47,53,258,259,260,261],"SM2 加密","SM2 解密","国密算法","SM2 密钥生成","压缩公钥","Hex 密文",{},"\u002Ftools\u002Fsm2-encryption",{"title":5,"description":251},"SM2 公钥加解密工具 - C1C3C2、C1C2C3 与 Hex 密钥","sm2-encryption","published","tools\u002Fsm2-encryption","2026-07-25",[271,272,273],"新接口保持默认 C1C3C2；只有对接方明确要求时才切换 C1C2C3","加密只需要公钥，解密必须使用配套的 32 字节 Hex 私钥","生成密钥后请立即保存私钥，刷新或关闭页面后无法恢复","n9i85mKHxANxPvBt9_uUPhJaubaDOd2-n6mEHhjV7nc",[276,291,303,315,329,341,353,365,377,389,402,413,415,428,440,454,466,477],{"slug":277,"title":278,"description":279,"status":267,"icon":254,"keywords":280,"featured":253},"asymmetric-encryption","RSA 非对称加解密工具","使用 RSA 公钥加密、私钥解密短文本；支持常见 PEM、JWK、X.509 公钥和旧系统兼容参数。",[281,282,283,284,285,286,287,288,289,290],"RSA 加密","RSA 解密","RSA-OAEP","PKCS1Padding","OAEPWithSHA-256AndMGF1Padding","RSA 密钥生成","PEM 密钥","RSA JWK","PKCS#1 密钥","X.509 证书",{"slug":292,"title":293,"description":294,"status":267,"icon":295,"keywords":296,"featured":253},"base58-converter","Base58 编解码工具","在线使用 Bitcoin Base58 编解码 UTF-8 文本或 Hex 字节，并以文本、Hex 或二进制文件查看解码结果。","i-lucide-binary",[297,298,299,300,301,302],"Base58 编解码","Base58 编码","Base58 解码","Bitcoin Base58","Hex 转 Base58","Base58 在线工具",{"slug":304,"title":305,"description":306,"status":267,"icon":307,"keywords":308,"featured":253},"base64-converter","Base64 编解码工具","在线转换标准 Base64 与 Base64URL，支持 UTF-8 文本、Hex 字节、文件编码及二进制解码下载。","i-lucide-file-key-2",[309,310,311,312,313,314],"Base64 编解码","Base64URL","文件转 Base64","Hex 转 Base64","Base64 解码","Base64 在线工具",{"slug":316,"title":317,"description":318,"status":267,"icon":319,"keywords":320,"featured":253},"chacha20-poly1305","ChaCha20-Poly1305 加解密工具","使用 ChaCha20 或 XChaCha20-Poly1305 安全加解密文本，适合现代 AEAD 或对接 RFC 8439 的场景。","i-lucide-shield-check",[321,322,323,324,325,326,327,328],"ChaCha20-Poly1305","XChaCha20-Poly1305","ChaCha20 加密","Poly1305","RFC 8439","AEAD","AAD","PBKDF2",{"slug":330,"title":331,"description":332,"status":267,"icon":333,"keywords":334,"featured":253},"hex-converter","Hex 编解码工具","在线转换 UTF-8 文本与十六进制字节，支持大小写、0x 前缀以及空格或冒号分隔格式。","i-lucide-hash",[335,336,337,338,339,340],"Hex 编解码","十六进制编码","十六进制解码","文本转 Hex","0x Hex","Hex 在线工具",{"slug":342,"title":343,"description":344,"status":267,"icon":345,"keywords":346,"featured":253},"hybrid-encryption","RSA + AES 混合加解密工具","使用接收方 RSA 公钥加密较长文本：RSA 包装随机 AES-256 密钥，正文由 AES-GCM 保护。","i-lucide-package-check",[347,348,283,349,350,351,352],"混合加密","RSA AES","AES-256-GCM","数字信封","会话密钥","Hybrid Encryption",{"slug":354,"title":355,"description":356,"status":267,"icon":357,"keywords":358,"featured":253},"json-formatter","JSON 格式化与校验工具","在线校验、格式化和压缩 JSON 数据，支持 JSONC 单行与块注释，可准确定位格式错误，内容仅在浏览器本地处理。","i-lucide-braces",[359,360,361,362,363,364],"JSON 格式化","JSON 校验","JSON 压缩","JSONC","JSON 在线工具","JSON 注释",{"slug":366,"title":367,"description":368,"status":267,"icon":369,"keywords":370,"featured":253},"md5-generator","MD5 哈希工具","在线计算文本或文件的 MD5 摘要，支持十六进制大小写和 Base64 输出，内容仅在浏览器本地处理。","i-lucide-fingerprint",[371,372,373,374,375,376],"MD5 工具","MD5 哈希","文件 MD5","MD5 Base64","文本 MD5","MD5 摘要",{"slug":378,"title":379,"description":380,"status":267,"icon":381,"keywords":382,"featured":253},"qr-code","二维码生成与识别工具","在线生成二维码并下载 PNG 或 SVG，也可上传图片识别二维码内容；文本和图片只在浏览器本地处理。","i-lucide-qr-code",[383,384,385,386,387,388],"二维码生成","二维码识别","二维码解析","QR Code","在线二维码工具","二维码图片",{"slug":390,"title":391,"description":392,"status":267,"icon":307,"keywords":393,"featured":253},"rsa-key-converter","RSA 密钥格式转换与解析工具","识别 RSA 密钥或证书的实际格式，在 PEM、DER、JWK 之间转换，并用指纹核对是否为同一公钥。",[394,395,396,397,398,399,400,401],"RSA 密钥转换","PEM 转 JWK","JWK 转 PEM","PKCS#1 转 PKCS#8","SPKI 公钥","DER 解析","X.509 证书解析","RSA 指纹",{"slug":403,"title":404,"description":405,"status":267,"icon":319,"keywords":406,"featured":253},"sha256-generator","SHA-256 哈希工具","在线计算文本或文件的 SHA-256 摘要，支持十六进制大小写和 Base64 输出，内容仅在浏览器本地处理。",[407,408,409,410,411,412],"SHA-256 工具","SHA256 哈希","文件 SHA256","SHA256 Base64","文本 SHA256","SHA-256 摘要",{"slug":266,"title":5,"description":251,"status":267,"icon":254,"keywords":414,"featured":253},[256,257,47,53,258,259,260,261],{"slug":416,"title":417,"description":418,"status":267,"icon":419,"keywords":420,"featured":253},"sm4-encryption","SM4 对称加解密工具","面向国密系统使用 SM4-CBC 或 SM4-ECB 加解密文本，并与 Hex、Base64 密文接口联调。","i-lucide-lock-keyhole",[421,422,423,424,425,426,258,261,427],"SM4 加密","SM4 解密","SM4-CBC","SM4-ECB","PKCS7","NoPadding","Base64 密文",{"slug":429,"title":430,"description":431,"status":267,"icon":432,"keywords":433,"featured":253},"social-insurance","五险一金计算器","按城市、逐月工资、个人缴费基数和专项附加扣除，估算个人五险一金、累计预扣个税与税后收入。","i-lucide-calculator",[434,435,436,437,438,439],"五险一金","社保计算","公积金计算","缴费基数","税后工资","个税计算",{"slug":441,"title":442,"description":443,"status":267,"icon":419,"keywords":444,"featured":253},"symmetric-encryption","AES 对称加解密工具","使用共享密钥或口令加解密文本；默认采用 AES-256-GCM，并保留 CBC、CTR、CFB、ECB 等兼容模式。",[445,446,447,448,449,450,451,328,452,453],"AES 加密","AES 解密","AES-GCM","AES-CBC","AES-ECB","PKCS7Padding","ZeroPadding","AES AAD","AES 原始参数",{"slug":455,"title":456,"description":457,"status":267,"icon":458,"keywords":459,"featured":253},"timestamp-converter","时间戳转换工具","在线完成 Unix 时间戳与日期时间互转，自动识别秒或毫秒，支持 IANA 时区和多行批量转换。","i-lucide-clock-3",[460,461,462,463,464,465],"时间戳转换","Unix 时间戳","timestamp","日期转时间戳","时间戳转日期","毫秒时间戳",{"slug":467,"title":468,"description":469,"status":267,"icon":295,"keywords":470,"featured":253},"unicode-converter","Unicode 转换工具","在线将中文、Emoji 等普通文本转换为 \\uXXXX Unicode 转义，或把 Unicode 转义还原为可读文本，内容仅在浏览器本地处理。",[471,472,473,474,475,476],"Unicode 转换","Unicode 转中文","中文转 Unicode","Unicode 编码","Unicode 解码","Unicode 在线工具",{"slug":478,"title":479,"description":480,"status":267,"icon":481,"keywords":482,"featured":253},"yaml-json-converter","YAML 校验与 JSON 互转工具","在线校验 YAML 或 JSON 格式，并在 YAML 与标准 JSON 之间双向转换，可定位常见语法错误，内容仅在浏览器本地处理。","i-lucide-file-json-2",[483,484,485,486,487,488],"YAML 校验","YAML 转 JSON","JSON 转 YAML","YAML JSON 互转","YAML 在线工具","YAML 格式检查",1784957143881]