Merge pull request #1519 from olixina/master

feat: add some decryption methods
pull/1522/head
kunfei 3 years ago committed by GitHub
commit 8d4f86874f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      app/build.gradle
  2. 72
      app/src/main/java/io/legado/app/help/JsExtensions.kt

@ -219,6 +219,9 @@ dependencies {
// //
implementation('com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.3') implementation('com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.3')
//
implementation('cn.hutool:hutool-crypto:5.7.19')
//com.github.AmrDeveloper:CodeView已集成到应用内 //com.github.AmrDeveloper:CodeView已集成到应用内
//epubLib集成到应用内 //epubLib集成到应用内

@ -3,6 +3,8 @@ package io.legado.app.help
import android.net.Uri import android.net.Uri
import android.util.Base64 import android.util.Base64
import androidx.annotation.Keep import androidx.annotation.Keep
import cn.hutool.crypto.symmetric.AES
import cn.hutool.crypto.symmetric.DESede
import io.legado.app.BuildConfig import io.legado.app.BuildConfig
import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst
import io.legado.app.constant.AppConst.dateFormat import io.legado.app.constant.AppConst.dateFormat
@ -688,4 +690,74 @@ interface JsExtensions {
return AppConst.androidId return AppConst.androidId
} }
/**
* AES解密算法参数经过Base64加密
*
* @param data 加密的字符串
* @param key Base64后的密钥
* @param mode 模式
* @param padding 补码方式
* @param iv Base64后的加盐
* @return 解密后的字符串
*/
fun aesDecodeArgsBase64Str(
data: String,
key: String,
mode: String,
padding: String,
iv: String
): String? {
return AES(
mode,
padding,
Base64.decode(key, Base64.NO_WRAP),
Base64.decode(iv, Base64.NO_WRAP)
).decryptStr(data)
}
/**
* 3DES解密
*
* @param data 加密的字符串
* @param key 密钥
* @param mode 模式
* @param padding 补码方式
* @param iv 加盐
* @return 解密后的字符串
*/
fun tripleDESDecodeStr(
data: String,
key: String,
mode: String,
padding: String,
iv: String
): String? {
return DESede(mode, padding, key.toByteArray(), iv.toByteArray()).decryptStr(data)
}
/**
* 3DES解密算法参数经过Base64加密
*
* @param data 加密的字符串
* @param key Base64后的密钥
* @param mode 模式
* @param padding 补码方式
* @param iv Base64后的加盐
* @return 解密后的字符串
*/
fun tripleDESDecodeArgsBase64Str(
data: String,
key: String,
mode: String,
padding: String,
iv: String
): String? {
return DESede(
mode,
padding,
Base64.decode(key, Base64.NO_WRAP),
Base64.decode(iv, Base64.NO_WRAP)
).decryptStr(data)
}
} }

Loading…
Cancel
Save