Commit 3ab5f347 authored by yinjiacheng's avatar yinjiacheng

add 加密服务

parent 700f6ea1
...@@ -6,7 +6,6 @@ import com.yidian.bcommon.app.YdBaseApplication ...@@ -6,7 +6,6 @@ import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.constant.AppConfig import com.yidian.bcommon.constant.AppConfig
import com.yidian.bcommon.sdk.BCommonManager import com.yidian.bcommon.sdk.BCommonManager
import com.yidian.bcommon.utils.NetWorkUtils import com.yidian.bcommon.utils.NetWorkUtils
import com.yidian.framework.mobile.xdiamond.SecretUtil
import com.yidian.yac.ftdevicefinger.core.FtDeviceFingerManager import com.yidian.yac.ftdevicefinger.core.FtDeviceFingerManager
import timber.log.Timber import timber.log.Timber
import java.lang.reflect.Type import java.lang.reflect.Type
...@@ -38,7 +37,7 @@ class HttpParamsUtils { ...@@ -38,7 +37,7 @@ class HttpParamsUtils {
// C端身份请求加uid // C端身份请求加uid
BCommonManager.getUid()?.let { paramsMap["user_id"] = it } BCommonManager.getUid()?.let { paramsMap["user_id"] = it }
Timber.tag(BCommonManager.TAG_HTTP).d("request private params: ${gson.toJson(paramsMap)}") Timber.tag(BCommonManager.TAG_HTTP).d("request private params: ${gson.toJson(paramsMap)}")
hashMapOf("tok" to SecretUtil.rsaEncrypt(gson.toJson(paramsMap))) hashMapOf("tok" to BCommonManager.getEncryptIml().rsaEncrypt(gson.toJson(paramsMap)))
} else { } else {
Timber.tag(BCommonManager.TAG_HTTP).d("request private params: ${gson.toJson(paramsMap)}") Timber.tag(BCommonManager.TAG_HTTP).d("request private params: ${gson.toJson(paramsMap)}")
paramsMap paramsMap
...@@ -53,10 +52,10 @@ class HttpParamsUtils { ...@@ -53,10 +52,10 @@ class HttpParamsUtils {
decodeResult.status = res.status decodeResult.status = res.status
if (rsaResult != null) { if (rsaResult != null) {
if (AppConfig.IS_ENCRYPT) { if (AppConfig.IS_ENCRYPT) {
val result = SecretUtil.rsaDecrypt(rsaResult as String) val result = BCommonManager.getEncryptIml().rsaDecrypt(rsaResult as String)
Timber.tag(BCommonManager.TAG_HTTP).d("response result: $result") Timber.tag(BCommonManager.TAG_HTTP).d("response result: $result")
val decryptResult = gson.fromJson<HttpDecryptResult<T>>(result, object : TypeToken<HttpDecryptResult<T>>() {}.type) val decryptResult = gson.fromJson<HttpDecryptResult<T>>(result, object : TypeToken<HttpDecryptResult<T>>() {}.type)
val verify = SecretUtil.verifySign(decryptResult.reqid + decryptResult.ts, decryptResult.secret) val verify = BCommonManager.getEncryptIml().verifySign(decryptResult.reqid + decryptResult.ts, decryptResult.secret)
return if (verify) { return if (verify) {
Timber.tag(BCommonManager.TAG_HTTP).d("verify success") Timber.tag(BCommonManager.TAG_HTTP).d("verify success")
val resultJson = gson.toJson(decryptResult.data) val resultJson = gson.toJson(decryptResult.data)
...@@ -68,6 +67,7 @@ class HttpParamsUtils { ...@@ -68,6 +67,7 @@ class HttpParamsUtils {
} }
} else { } else {
val resultJson = gson.toJson(rsaResult) val resultJson = gson.toJson(rsaResult)
Timber.tag(BCommonManager.TAG_HTTP).d("response result: $resultJson")
decodeResult.result = gson.fromJson<T>(resultJson, type) decodeResult.result = gson.fromJson<T>(resultJson, type)
return decodeResult return decodeResult
} }
...@@ -84,8 +84,8 @@ class HttpParamsUtils { ...@@ -84,8 +84,8 @@ class HttpParamsUtils {
.toString() .toString()
} }
private fun getSignString(reqId: String, timeStamp: Long): String? { private fun getSignString(reqId: String, timeStamp: Long): String {
return SecretUtil.sign(StringBuilder().append(reqId).append(timeStamp).toString()) return BCommonManager.getEncryptIml().sign(StringBuilder().append(reqId).append(timeStamp).toString())
} }
} }
} }
...@@ -12,8 +12,10 @@ object BCommonManager { ...@@ -12,8 +12,10 @@ object BCommonManager {
const val TAG_HTTP = "merchant-b-http" const val TAG_HTTP = "merchant-b-http"
val publicParams by lazy { HashMap<String, String>() } /**
val privateParams by lazy { HashMap<String, String>() } * 加密接口实现
*/
private lateinit var encryptIml: IEncryptService
/** /**
* C端 uid * C端 uid
...@@ -22,24 +24,6 @@ object BCommonManager { ...@@ -22,24 +24,6 @@ object BCommonManager {
// private var uid: String? = "510227073302" // private var uid: String? = "510227073302"
private var uid: String? = null private var uid: String? = null
/**
* 初始化公共参数
*/
fun initPublicParams(params: HashMap<String, String>) {
params.forEach {
publicParams[it.key] = it.value
}
}
/**
* 初始化私有参数
*/
fun initPrivateParams(params: HashMap<String, String>) {
params.forEach {
privateParams[it.key] = it.value
}
}
/** /**
* C端同步uid * C端同步uid
*/ */
...@@ -73,4 +57,18 @@ object BCommonManager { ...@@ -73,4 +57,18 @@ object BCommonManager {
fun getUid(): String? { fun getUid(): String? {
return uid return uid
} }
/**
* 获取加密接口实现
*/
fun getEncryptIml(): IEncryptService {
return encryptIml
}
/**
* 添加加密接口实现
*/
fun setEncryptIml(service: IEncryptService) {
encryptIml = service
}
} }
package com.yidian.bcommon.sdk
/**
* author: yinjiacheng
* date: 7/28/21 11:22 AM
* description: 加解密服务接口定义
*/
interface IEncryptService {
/**
* RSA私钥签名
* @param src 需要签名的字符串
* @return 签名结果
*/
fun sign(src: String): String
/**
* RSA公钥验签
* @param src 原始串
* @param sign 签名串
* @return 是否通过
*/
fun verifySign(src: String, sign: String): Boolean
/**
* RSA公钥加密
* @param src 需要加密的字符串
* @return 加密结果
*/
fun rsaEncrypt(src: String): String
/**
* RSA私钥解密
* @param src 加密串
*/
fun rsaDecrypt(src: String): String
/**
* AES加密
* @param src 需要加密的字符串
* @return 加密结果
*/
fun aesEncrypt(src: String): String
/**
* AES解密
* @param src 加密串
*/
fun aesDecrypt(src: String): String
}
...@@ -9,14 +9,35 @@ class ZapServiceActionConstants { ...@@ -9,14 +9,35 @@ class ZapServiceActionConstants {
companion object { companion object {
// 退出登录 // 退出登录
const val ActionLogout = "ActionLogout" const val ActionLogout = "ActionLogout"
// 请求生活号列表 // 请求生活号列表
const val ActionRequestList = "ActionRequestList" const val ActionRequestList = "ActionRequestList"
// 请求短信验证码 // 请求短信验证码
const val ActionRequestSmsCode = "ActionRequestSmsCode" const val ActionRequestSmsCode = "ActionRequestSmsCode"
// 通过服务清除内存中的认证数据 // 通过服务清除内存中的认证数据
const val ActionClearAuthenticationData = "ActionClearAuthenticationData" const val ActionClearAuthenticationData = "ActionClearAuthenticationData"
// 进行支付 // 进行支付
const val ActionToPay = "ActionToPay" const val ActionToPay = "ActionToPay"
// RSA私钥签名
const val ActionRSASign = "RSASign"
// RSA公钥验签
const val ActionRSAVerifySign = "RSAVerifySign"
// RSA公钥加密
const val ActionRSAEncrypt = "RSAEncrypt"
// RSA私钥解密
const val ActionRSADecrypt = "RSADecrypt"
// AES加密
const val ActionAESEncrypt = "AESEncrypt"
// AES解密
const val ActionAESDecrypt = "AESDecrypt"
} }
} }
...@@ -17,7 +17,8 @@ class ZapServiceNameConstants { ...@@ -17,7 +17,8 @@ class ZapServiceNameConstants {
const val BNAHttpReq = "BNAHttpReq" const val BNAHttpReq = "BNAHttpReq"
// BOrder组件中给H5提供的支付服务(名称需要和H5同步的) // BOrder组件中给H5提供的支付服务(名称需要和H5同步的)
const val BPayService = "bPayService" const val BPayService = "bPayService"
// BRoot组件中加解密服务
const val EncryptService = "EncryptService"
} }
} }
...@@ -38,8 +38,6 @@ object BaseInitConfig { ...@@ -38,8 +38,6 @@ object BaseInitConfig {
if (ProcessUtil.isMainProcess(context)) { if (ProcessUtil.isMainProcess(context)) {
FtDeviceFingerManager.init(context) FtDeviceFingerManager.init(context)
initXBridManager(context) initXBridManager(context)
// 初始化磐石SDK
SecretUtil.init(BuildConfig.IS_ENCRYPT_DEBUG_KEY, BuildConfig.DEBUG)
// 初始化App升级 // 初始化App升级
initAppUpgrade(context) initAppUpgrade(context)
// 初始化慧眼 // 初始化慧眼
......
package com.yidian.shenghuoquan.broot.app package com.yidian.shenghuoquan.broot.app
import android.content.Intent import android.content.Intent
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.app.YdBaseApplication import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.services.ZapServiceNameConstants
import com.yidian.news.util.ProcessUtil import com.yidian.news.util.ProcessUtil
import com.yidian.shenghuoquan.broot.service.EncryptService
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec import com.yidian.yac.core.core.YacModuleSpec
import com.yidian.yac.core.zap.Zap
@YacModuleSpec @YacModuleSpec
...@@ -40,5 +43,6 @@ class BRootApplication : YdBaseApplication() { ...@@ -40,5 +43,6 @@ class BRootApplication : YdBaseApplication() {
} }
private fun initService() { private fun initService() {
Zap.addService(ZapServiceNameConstants.EncryptService, EncryptService())
} }
} }
package com.yidian.shenghuoquan.broot.service
import com.yidian.bcommon.BuildConfig
import com.yidian.bcommon.sdk.BCommonManager
import com.yidian.bcommon.sdk.IEncryptService
import com.yidian.bcommon.services.ZapServiceActionConstants
import com.yidian.framework.mobile.xdiamond.SecretUtil
import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.yac.core.zap.ZapService
import org.json.JSONObject
/**
* author: yinjiacheng
* date: 7/28/21 9:34 AM
* description: 加密服务
* 目前基于XDiamond(磐石)实现
*/
class EncryptService : ZapService(), IEncryptService {
init {
// 初始化磐石SDK
SecretUtil.init(BuildConfig.IS_ENCRYPT_DEBUG_KEY, BuildConfig.DEBUG)
BCommonManager.setEncryptIml(this)
}
override fun sign(src: String): String {
return SecretUtil.sign(src) ?: ""
}
override fun verifySign(src: String, sign: String): Boolean {
return SecretUtil.verifySign(src, sign)
}
override fun rsaEncrypt(src: String): String {
return SecretUtil.rsaEncrypt(src) ?: ""
}
override fun rsaDecrypt(src: String): String {
return SecretUtil.rsaDecrypt(src) ?: ""
}
override fun aesEncrypt(src: String): String {
return SecretUtil.aesEncrypt(src) ?: ""
}
override fun aesDecrypt(src: String): String {
return SecretUtil.aesDecrypt(src) ?: ""
}
override fun onAction(path: String, action: String, params: Any, options: Any, resolver: ResultResolver) {
when (action) {
ZapServiceActionConstants.ActionRSASign -> {
// RSA私钥签名
val result = SecretUtil.sign((params as JSONObject).optString("src"))
resolver.success(JSONObject().put("result", result))
}
ZapServiceActionConstants.ActionRSAVerifySign -> {
// RSA公钥验签
val result = SecretUtil.verifySign((params as JSONObject).optString("src"), params.optString("sign"))
resolver.success(JSONObject().put("result", result))
}
ZapServiceActionConstants.ActionRSAEncrypt -> {
// RSA公钥加密
val result = SecretUtil.rsaEncrypt((params as JSONObject).optString("src"))
resolver.success(JSONObject().put("result", result))
}
ZapServiceActionConstants.ActionRSADecrypt -> {
// RSA私钥解密
val result = SecretUtil.rsaDecrypt((params as JSONObject).optString("src"))
resolver.success(JSONObject().put("result", result))
}
ZapServiceActionConstants.ActionAESEncrypt -> {
// AES加密
val result = SecretUtil.aesEncrypt((params as JSONObject).optString("src"))
resolver.success(JSONObject().put("result", result))
}
ZapServiceActionConstants.ActionAESDecrypt -> {
// AES解密
val result = SecretUtil.aesDecrypt((params as JSONObject).optString("src"))
resolver.success(JSONObject().put("result", result))
}
}
}
override fun onExit() {
}
override fun onInit() {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment