Commit 3ab5f347 authored by yinjiacheng's avatar yinjiacheng

add 加密服务

parent 700f6ea1
......@@ -6,7 +6,6 @@ import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.constant.AppConfig
import com.yidian.bcommon.sdk.BCommonManager
import com.yidian.bcommon.utils.NetWorkUtils
import com.yidian.framework.mobile.xdiamond.SecretUtil
import com.yidian.yac.ftdevicefinger.core.FtDeviceFingerManager
import timber.log.Timber
import java.lang.reflect.Type
......@@ -38,7 +37,7 @@ class HttpParamsUtils {
// C端身份请求加uid
BCommonManager.getUid()?.let { paramsMap["user_id"] = it }
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 {
Timber.tag(BCommonManager.TAG_HTTP).d("request private params: ${gson.toJson(paramsMap)}")
paramsMap
......@@ -53,10 +52,10 @@ class HttpParamsUtils {
decodeResult.status = res.status
if (rsaResult != null) {
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")
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) {
Timber.tag(BCommonManager.TAG_HTTP).d("verify success")
val resultJson = gson.toJson(decryptResult.data)
......@@ -68,6 +67,7 @@ class HttpParamsUtils {
}
} else {
val resultJson = gson.toJson(rsaResult)
Timber.tag(BCommonManager.TAG_HTTP).d("response result: $resultJson")
decodeResult.result = gson.fromJson<T>(resultJson, type)
return decodeResult
}
......@@ -84,8 +84,8 @@ class HttpParamsUtils {
.toString()
}
private fun getSignString(reqId: String, timeStamp: Long): String? {
return SecretUtil.sign(StringBuilder().append(reqId).append(timeStamp).toString())
private fun getSignString(reqId: String, timeStamp: Long): String {
return BCommonManager.getEncryptIml().sign(StringBuilder().append(reqId).append(timeStamp).toString())
}
}
}
......@@ -12,8 +12,10 @@ object BCommonManager {
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
......@@ -22,24 +24,6 @@ object BCommonManager {
// private var uid: String? = "510227073302"
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
*/
......@@ -73,4 +57,18 @@ object BCommonManager {
fun getUid(): String? {
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 {
companion object {
// 退出登录
const val ActionLogout = "ActionLogout"
// 请求生活号列表
const val ActionRequestList = "ActionRequestList"
// 请求短信验证码
const val ActionRequestSmsCode = "ActionRequestSmsCode"
// 通过服务清除内存中的认证数据
const val ActionClearAuthenticationData = "ActionClearAuthenticationData"
// 进行支付
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 {
const val BNAHttpReq = "BNAHttpReq"
// BOrder组件中给H5提供的支付服务(名称需要和H5同步的)
const val BPayService = "bPayService"
// BRoot组件中加解密服务
const val EncryptService = "EncryptService"
}
}
......@@ -38,8 +38,6 @@ object BaseInitConfig {
if (ProcessUtil.isMainProcess(context)) {
FtDeviceFingerManager.init(context)
initXBridManager(context)
// 初始化磐石SDK
SecretUtil.init(BuildConfig.IS_ENCRYPT_DEBUG_KEY, BuildConfig.DEBUG)
// 初始化App升级
initAppUpgrade(context)
// 初始化慧眼
......
package com.yidian.shenghuoquan.broot.app
import android.content.Intent
import com.yidian.bcommon.constant.XRouterPathConstants
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.shenghuoquan.broot.service.EncryptService
import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec
import com.yidian.yac.core.zap.Zap
@YacModuleSpec
......@@ -40,5 +43,6 @@ class BRootApplication : YdBaseApplication() {
}
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