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