crypto

$crypto 模块提供了对称加密(例如 AES)、非对称加密(例如 RSA)、消息摘要(例如 MD5, SHA)等支持。

1let message = "未加密字符串";
2log("明文: ", message);
3
4// 密钥,由于AES等算法要求是16位的倍数,我们这里用一个16位的密钥
5let key = new $crypto.Key("password12345678");
6log("密钥: ", key);
7
8// AES加密
9let aes = $crypto.encrypt(message, key, "AES/ECB/PKCS5padding");
10log("AES加密后二进制数据: ", aes);
11log("AES解密: ", $crypto.decrypt(aes, key, "AES/ECB/PKCS5padding", { output: "string" }));
12
13// RSA加密
14
15// 生成RSA密钥
16let keyPair = $crypto.generateKeyPair("RSA");
17log("密钥对: ", keyPair);
18
19// 使用私钥加密
20let rsa = $crypto.encrypt(message, keyPair.privateKey, "RSA/ECB/PKCS1padding");
21log("RSA私钥加密后二进制数据: ", rsa);
22
23// 使用公钥解密
24log("RSA公钥解密: ", $crypto.decrypt(rsa, keyPair.publicKey, "RSA/ECB/PKCS1padding", { output: "string" }));
1// 字符串消息摘要
2let message = "Hello, Autox.js";
3// 输出各种消息摘要算法结果的hex值
4log("字符串: ", message);
5log("MD5: ", $crypto.digest(message, "MD5"));
6log("SHA1: ", $crypto.digest(message, "SHA-1"));
7log("SHA256: ", $crypto.digest(message, "SHA-256"));
8
9// 输出各种消息摘要算法结果的base64值
10log("MD5 [base64]: ", $crypto.digest(message, "MD5", { output: "base64" }));
11log("SHA1 [base64]: ", $crypto.digest(message, "SHA-1", { output: "base64" }));
12log("SHA256 [base64]: ", $crypto.digest(message, "SHA-256", { output: "base64" }));
13
14// 文件消息摘要
15let file = "/sdcard/脚本/_test_for_message_digest.js";
16// 写入文件内容,提供为后续计算MD5等
17$files.write(file, "Test!");
18log("文件: ", file);
19log("MD5: ", $crypto.digest(file, "MD5", { input: "file" }));
20log("SHA1: ", $crypto.digest(file, "SHA-1", { input: "file" }));
21log("SHA256: ", $crypto.digest(file, "SHA-256", { input: "file" }));