做开发的人桌面常开一堆零散工具——一个 JSON 格式化页面、一个加密解密网站、一个截图软件、一个 Markdown 编辑器……切换成本不高,但累积起来很烦。MooTool 用 Java 把这些常用功能收拢到一个桌面应用里,1.7.3 版本又塞进了几样新东西,值得看看。
这次更新加了什么
新版本的核心变化集中在几个方向:
随手记终于能预览了。 之前的随手记只写纯文本,现在支持 Markdown 格式预览,还能直接插入图片。对于习惯随手记命令、配置片段的开发者来说,这比开一个专门笔记应用轻得多。
图片助手补齐了 OCR。 截图、压缩、加水印这些之前就有,1.7.3 加上了 OCR 文字识别。从截图直接提取文本,省去再开一个 OCR 工具的步骤。
加解密支持国密算法。 国密(SM2/SM3/SM4)在金融、政务场景越来越常见,但主流加密工具很少直接内置。MooTool 现在把国密和常规 AES/RSA 放在一起,切换算法只需下拉选择。
新增 Protobuf 工具。 Protobuf 的 .proto 文件编写和消息编解码调试一直缺好用的桌面工具,这次补上了。
其余改进包括:翻译功能完善、网络/IP 模块增加 Whois 查询、调色板支持颜色相交与取反运算。
实际场景:国密加解密怎么用
国密算法在不少国内项目里已经是硬性要求,但开发阶段找工具验证加密结果并不方便。下面用一个最小 Java 示例演示 SM4 加解密流程——这正是 MooTool 内置的功能,你可以用它快速对照验证自己的代码输出是否正确。
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Security;
import java.util.Base64;
public class SM4Demo {
static {
// BouncyCastle 提供国密算法实现
Security.addProvider(new BouncyCastleProvider());
}
public static String encrypt(String plaintext, String keyHex) throws Exception {
byte[] keyBytes = hexToBytes(keyHex);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "SM4");
Cipher cipher = Cipher.getInstance("SM4/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(plaintext.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encrypted);
}
public static String decrypt(String ciphertextB64, String keyHex) throws Exception {
byte[] keyBytes = hexToBytes(keyHex);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "SM4");
Cipher cipher = Cipher.getInstance("SM4/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(ciphertextB64));
return new String(decrypted, "UTF-8");
}
private static byte[] hexToBytes(String hex) {
int len = hex.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16));
}
return data;
}
public static void main(String[] args) throws Exception {
// SM4 密钥必须是 16 字节(32 位十六进制)
String key = "0123456789abcdeffedcba9876543210";
String text = "Hello, 国密SM4!";
String encrypted = encrypt(text, key);
System.out.println("加密结果 (Base64): " + encrypted);
String decrypted = decrypt(encrypted, key);
System.out.println("解密结果: " + decrypted);
}
}
运行前需要引入 BouncyCastle 依赖:
<!-- Maven 依赖 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>1.78</version>
</dependency>
跑完之后,把密钥和 Base64 输出贴进 MooTool 的加解密模块,选 SM4/ECB,看两边结果是否一致——这就是它最直接的用法:快速验证你的加密实现有没有写错。
Protobuf 工具的调试价值
gRPC 和微服务场景下,Protobuf 消息的二进制调试一直是个痛点。你拿到一段编码后的字节,肉眼读不出字段值;写 .proto 文件时也要反复确认字段编号和类型是否对齐。
MooTool 新增的 Protobuf 工具覆盖了两个方向:
- 编写
.proto定义:内置编辑器,不用另开 IDE。 - 消息编解码验证:输入二进制数据或 JSON,对照
.proto定义做双向转换。
一个典型调试流程:服务端日志打出了一串 Protobuf 编码的 hex 数据,你把它粘贴进 MooTool,加载对应的 .proto 文件,立刻看到每个字段的值——比写一段临时反序列化代码快得多。
谁适合装一个
MooTool 的定位不是替代专业工具,而是把高频低复杂度的操作收拢。适合这些情况:
- 经常需要格式化 JSON、计算 Hash、做 Base64 转换,不想每次搜在线工具。
- 项目要求国密算法,需要随手验证加密结果。
- 用 Protobuf/gRPC,需要快速解码二进制消息。
- 截图后要加水印或 OCR 提取文字,不想开三个软件。
不适合的场景也很明确:如果你只在单一领域深耕(比如只做图片处理),专业工具仍然更强。MooTool 的优势是覆盖面广、切换零成本。
安装和上手
MooTool 基于 Java 开发,跨平台运行。从项目发布页下载对应版本,本地有 JRE 即可启动。界面是模块化布局——左侧功能列表,右侧操作区,每个模块独立,不需要配置就能用。
一个建议:先把加解密和随手记两个模块试起来,这两个在日常开发中使用频率最高,能最快感受到"不用再开浏览器找工具"的便利。