Crypto - 加解密与消息摘要
# Crypto
** [[Pro 8.0.0新增](https://pro.autojs.org/)] **
$crypto模块提供了对称加密(例如AES)、非对称加密(例如RSA)、消息摘要(例如MD5, SHA)等支持。
## $crypto.digest(message, algorithm[, options])
* `message` {any}
* `algorithm` {string} 消息摘要算法,包括:
* MD5
* SHA-1
* SHA-256
* SHA-384
* SHA-512
* `options` {any}
对信息message使用消息摘要算法`algorithm`进行摘要并返回结果,默认的输出格式为hex。
参数message的类型默认为字符串,返回值默认为hex;可以通过options来指定参数message的类型和返回值的类型、格式,比如文件、base64、字节数组、hex等。参见《输入和输出的类型和格式》。
```javascript
// 计算字符串abc的md5
toastLog($crypto.digest("abc", "MD5"));
// 计算字符串abc的sha-256
toastLog($crypto.digest("abc", "SHA-256"));
// 计算文件/sdcard/1.txt的md5
toastLog($crypto.digest("/sdcard/1.txt", "MD5", {
input: "file"
}));
```
## $crypto.encrypt(data, key, algorithm, options)
* `data` {any} 明文消息
* `key` {Key} 密钥
* `algorithm` {string} 加密算法,包括:
* AES
* AES/ECB/NoPadding
* AES/ECB/PKCS5Padding
* AES/CBC/NoPadding
* AES/CBC/PKCS5Padding
* AES/CFB/NoPadding
* AES/CFB/PKCS5Padding
* AES/CTR/NoPadding
* AES/CTR/PKCS5Padding
* AES/OFB/PKCS5Padding
* AES/OFB/PKCS5Padding
* RSA/ECB/PKCS1Padding
* RSA/ECB/NoPadding
* ...
具体可参阅 [javax.crypto.Cipher](https://developer.android.com/reference/javax/crypto/Cipher)
* `options` {Object} 加密选项
## 输入和输出的类型和格式