From 111f1de3862eb03fb8cb80128a268b9a7f1ab979 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sun, 16 Oct 2022 14:11:18 +0800 Subject: [PATCH] docs: update docs --- app/src/main/assets/help/jsHelp.md | 42 +++++---------- .../java/io/legado/app/help/JsExtensions.kt | 53 +++++++++++++++---- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/app/src/main/assets/help/jsHelp.md b/app/src/main/assets/help/jsHelp.md index 41de61d2e..563be2fe3 100644 --- a/app/src/main/assets/help/jsHelp.md +++ b/app/src/main/assets/help/jsHelp.md @@ -157,34 +157,20 @@ deleteFile(path: String) > 其他加密方式 可在js中[调用](https://m.jb51.net/article/92138.htm)[hutool-crypto](https://www.hutool.cn/docs/#/) -* AES -> transformation默认实现AES/ECB/PKCS5Padding -``` -java.aesDecodeToString(str: String, key: String, transformation: String, iv: String) - -java.aesBase64DecodeToString(str: String, key: String, transformation: String, iv: String) - -java.aesEncodeToString(str: String, key: String, transformation: String, iv: String) - -java.aesEncodeToBase64String(str: String, key: String, transformation: String, iv: String) -``` -* DES -> transformation默认实现DES/ECB/PKCS5Padding -``` -java.desDecodeToString(str: String, key: String, transformation: String, iv: String) - -java.desBase64DecodeToString(str: String, key: String, transformation: String, iv: String) - -java.desEncodeToString(str: String, key: String, transformation: String, iv: String) - -java.desEncodeToBase64String(str: String, key: String, transformation: String, iv: String) -``` -* 3DES -> tansformation默认实现DESede/ECB/PKCS5Padding -``` -java.tripleDESEncodeBase64Str(data: String,key: String,mode: String,padding: String,iv: String): String? - -java.tripleDESDecodeStr(data: String,key: String,mode: String,padding: String,iv: String): String? +* 对称加密AES/DES/TripleDES +> AES transformation默认实现AES/ECB/PKCS5Padding +> DES transformation默认实现DES/ECB/PKCS5Padding +> TripleDES tansformation默认实现DESede/ECB/PKCS5Padding +> 内部实现为cn.hutool.crypto 解密加密接口支持ByteArray|Base64String|HexString +> 输入参数key iv 支持ByteArray|Base64String|HexString|Utf8String +``` +//解密为ByteArray 字符串 +java.createSymmetricCrypto(transformation, key, iv).decrypt(data) +java.createSymmetricCrypto(transformation, key, iv).decryptStr(data) +//加密为ByteArray Base64字符 HEX字符 +java.createSymmetricCrypto(transformation, key, iv).encrypt(data) +java.createSymmetricCrypto(transformation, key, iv).encryptBase64(data) +java.createSymmetricCrypto(transformation, key, iv).encryptHex(data) ``` * 摘要 > MD5 SHA-1 SHA-224 SHA-256 SHA-384 SHA-512 diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 97a00dd3a..910c82c85 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -176,18 +176,15 @@ interface JsExtensions { /** * 缓存以文本方式保存的文件 如.js .txt等 + * @param urlStr 网络文件的链接 + * @param saveTime 缓存时间,单位:秒 + * @return 返回缓存后的文件内容 */ fun cacheFile(urlStr: String): String? { return cacheFile(urlStr, 0) } - /** - * 缓存以文本方式保存的文件 如.js .txt等 - * @param urlStr 网络文件的链接 - * @param saveTime 缓存时间,单位:秒 - * @return 返回缓存后的文件内容 - */ - fun cacheFile(urlStr: String, saveTime: Int = 0): String? { + fun cacheFile(urlStr: String, saveTime: Int): String? { val key = md5Encode16(urlStr) val cache = CacheManager.getFile(key) if (cache.isNullOrBlank()) { @@ -202,7 +199,11 @@ interface JsExtensions { /** *js实现读取cookie */ - fun getCookie(tag: String, key: String? = null): String { + fun getCookie(tag: String): String { + return getCookie(tag, null) + } + + fun getCookie(tag: String, key: String?): String { return if (key != null) { CookieStore.getKey(tag, key) } else { @@ -649,11 +650,28 @@ interface JsExtensions { //******************对称加密解密************************// + /** + * 在js中这样使用 + * java.createSymmetricCrypto(transformation, key, iv).decrypt(data) + * java.createSymmetricCrypto(transformation, key, iv).decryptStr(data) + + * java.createSymmetricCrypto(transformation, key, iv).encrypt(data) + * java.createSymmetricCrypto(transformation, key, iv).encryptBase64(data) + * java.createSymmetricCrypto(transformation, key, iv).encryptHex(data) + */ + /* 自动转换key iv 到ByteArray 支持base64 hex uft8*/ + fun createSymmetricCrypto( + transformation: String, + key: String + ): SymmetricCrypto { + return createSymmetricCrypto(transformation, key, null) + } + fun createSymmetricCrypto( transformation: String, key: String, - iv: String? = null + iv: String? ): SymmetricCrypto { return createSymmetricCrypto( transformation, @@ -663,10 +681,23 @@ interface JsExtensions { } /* 调用SymmetricCrypto key为null时使用随机密钥*/ + fun createSymmetricCrypto( + transformation: String + ): SymmetricCrypto { + return createSymmetricCrypto(transformation, null, null) + } + + fun createSymmetricCrypto( + transformation: String, + key: ByteArray + ): SymmetricCrypto { + return createSymmetricCrypto(transformation, key, null) + } + fun createSymmetricCrypto( transformation: String, - key: ByteArray? = null, - iv: ByteArray? = null + key: ByteArray?, + iv: ByteArray? ): SymmetricCrypto { val symmetricCrypto = SymmetricCrypto(transformation, key) return if (iv != null && !iv.isEmpty()) symmetricCrypto.setIv(iv) else symmetricCrypto