CyberChef实战指南:从RSA/AES加解密到中文乱码的优雅解决

发布时间:2026/6/29 3:17:42
CyberChef实战指南:从RSA/AES加解密到中文乱码的优雅解决 1. CyberChef安全工程师的瑞士军刀第一次接触CyberChef是在一次CTF比赛中当时需要快速解码一段Base64编码的字符串。试了几个在线工具都不太顺手直到队友推荐了这个神器。打开它的界面时我完全被震撼到了——这个看起来像厨房操作台的网页工具居然集成了200多种编码、加密、压缩、数据分析的功能。CyberChef最吸引我的地方在于它的配方Recipe设计理念。就像做菜一样你可以把不同的处理步骤像食材一样拖拽组合形成一个完整的处理流程。比如要解密一段AES加密的Base64数据只需要依次拖入From Base64和AES Decrypt两个操作模块设置好密钥就能立即看到结果。这种可视化的工作流特别适合安全分析、渗透测试和CTF解题场景。2. RSA加解密实战演练2.1 生成RSA密钥对在开始RSA加解密前我们需要准备密钥对。CyberChef内置了密钥生成器在搜索栏输入Generate RSA Key Pair将模块拖到配方区设置密钥长度推荐2048位以上点击Bake生成密钥生成的密钥会显示在输出窗口包含完整的PEM格式公私钥。我习惯把公钥保存为public.pem私钥保存为private.pem。这里有个小技巧点击输出窗口右上角的下载按钮可以直接保存密钥文件。2.2 RSA加密实战假设我们要加密字符串Hello CyberChef在输入框粘贴明文搜索并添加RSA Encrypt模块在模块参数中选择PEM key粘贴之前生成的公钥选择输出格式Base64最常用加密后的数据看起来像这样MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7...2.3 RSA解密操作解密是加密的逆过程粘贴加密后的Base64数据添加From Base64模块添加RSA Decrypt模块粘贴私钥内容点击Bake执行解密这里有个常见坑点如果解密后看到乱码可能是因为没有正确处理输入格式。RSA加密的数据通常是二进制格式需要先用Base64解码再解密。3. AES加解密全流程解析3.1 AES加密配置详解AES加密需要三个关键参数密钥16/24/32字节初始向量IV16字节加密模式CBC最常用假设我们要用CBC模式加密重要数据123搜索并添加AES Encrypt模块设置Key:mysecretkey123456(16字节)IV:1234567890abcdef(16字节)Mode: CBCInput: RawOutput: Base64加密后的输出类似U2FsdGVkX13C7g5j6KmZQ3.2 AES解密技巧解密时最容易出错的就是参数不匹配添加From Base64模块添加AES Decrypt模块确保密钥、IV和模式与加密时完全一致输出格式选择Raw如果解密失败首先检查密钥是否正确区分大小写IV是否匹配是否遗漏了Base64解码步骤加密模式是否一致CBC/ECB等4. 中文乱码问题终极解决方案4.1 Code Tidy模块妙用解密中文数据时最常见的乱码问题通常是由于字符编码转换不当造成的。CyberChef的Code Tidy模块是解决这类问题的利器。比如解密后得到如下乱码ä½ å¥½ï¼CyberChef解决方法添加Code Tidy模块选择Syntax highlighter在右侧设置中选择UTF-8编码这个模块的神奇之处在于它能自动识别并修复常见的编码问题特别是当中文数据经过多次编码转换时效果尤为明显。4.2 HEX编码转换技巧当Code Tidy也无法解决时可以尝试HEX转换法在AES/RSA解密模块的输出格式选择Hex观察输出窗口旁边的魔法棒图标鼠标悬停会显示可能的字符编码点击魔法棒自动添加From Hex模块最后再使用Code Tidy美化输出这个方法我曾在CTF比赛中多次使用特别是处理多层加密的中文数据时效果非常好。有一次遇到一个经过AESCBC加密后又用Base58编码的题目就是靠这个组合技破解的。5. 高级技巧与实战案例5.1 配方保存与分享CyberChef支持保存常用配方点击右上角的Save recipe生成分享链接或本地保存下次使用时点击Load recipe即可恢复我收集了几个常用配方中文乱码修复配方RSA签名验证流程AES-CBC多层解密配方5.2 正则表达式过滤在处理大量数据时可以结合Regular expression模块搜索中文[\u4e00-\u9fa5] 提取URL(https?://[^\s])5.3 实际案例分析最近遇到一个真实案例某API返回的加密数据解密后出现乱码。使用以下步骤解决先用From Base64解码添加AES Decrypt密钥已知输出仍为乱码将输出格式改为Hex点击魔法棒发现实际是UTF-16编码添加Decode text模块选择UTF-16成功还原中文内容这个案例让我深刻体会到编码转换的重要性现在处理加密数据时都会先检查输出格式选项。