资源AES解密接入文档.md 3.99 KB

资源AES解密接入文档

资源加密使用打包工具中工具拦截的Aes加解密项处理

注意事项:

  • 使用so库需使用如下签名打包,否则调用接口失败
    guangka签名md5 = "DE512029CD933F45124586FB275B645C"; wanqi签名md5 = "F3931078270964DFA23F0444EB1A8AB9"; gktest签名md5 = "15D040B1F80BA16B4DCCFDE61B7F5BEC"; jingyou签名md5 = "4992B09A21DEDEF3B4F776214E706287";

添加资源环境

  • 将libs下的Jar包和so库(根据游戏复制对应的so库)项目的libs下
  • 在工程的build.gradle中添加如下配置 sourceSets { main { jniLibs.srcDirs = ['libs'] } }

在Application或者主load对应so库

static {
    System.loadLibrary("common-sdk");
}

接入调用(接口在CryptInterface类中)

  • 初始化接口(Application或者主Activity的onCreate中调用)

    public static void init(Application application)
    

    例子:

    CryptInterface.init(getApplication());
    
  • 解密接口(解密assets目录中的资源)

    public static void decodeAssetsFilesFromDir(String fromDirPath, String toDirPath, CryptCallBack callBack)
    

    接口参数说明

字段名称 字段说明
fromDirPath 要解密资源assets的相对目录
toDirPath 解密资源到某个目录
callBack 解密结果回调

CryptCallBack说明:

字段名称 字段说明
code 10:解密成功(所有资源都成功才返回) 其他code为失败
msg 解密结果描述

例子:

CryptInterface.decodeAssetsFilesFromDir("commonEncode",        Environment.getExternalStorageDirectory() + "/gametest/encodeRes7", new CryptCallBack() {
   @Override
   public void callback(int code, Object msg) {
       CommonLog.logDebug("code:" + code + "   message:" + msg);
   }
});
  • 解密接口(解密除assets目录外的资源) public static void decodeSdFilesFromDir(String fromDirPath, String toDirPath, CryptCallBack callBack) 接口参数说明
字段名称 字段说明
fromDirPath 要解密资源的绝对路径
toDirPath 解密资源到某个目录
callBack 解密结果回调

CryptCallBack说明:

字段名称 字段说明
code 10:解密成功(所有资源都成功才返回) 其他code为失败
msg 解密结果描述

例子:

File storageDirectory = Environment.getExternalStorageDirectory();
String fromDir = storageDirectory + "/gametest/res";
String toDir = storageDirectory + "/gametest/decodeRes";
CryptInterface.decodeSdFilesFromDir(fromDir, toDir, new  CryptCallBack() {
    @Override
    public void callback(int code, Object msg) {
        CommonLog.logDebug("code:" + code + "   message:" + msg);
    }
});
  • 解密接口(直接解密传递的内容) public static void decode(byte[] content, CryptCallBack callBack) 接口参数说明
字段名称 字段说明
content 要解密的内容
callBack 解密结果回调

CryptCallBack说明:

字段名称 字段说明
code 10:解密成功(所有资源都成功才返回) 其他code为失败
msg 当code为10时返回的是解密内容(类型是byte数组) 其他时失败描述

例子:

byte[] decodeContent = {-31,-25,-89,40,108,-67,-41,-61,-92,-103,-104,-106,-93,38,-8,-115};
CryptInterface.decode(decodeContent, new CryptCallBack() {
    @Override
    public void callback(int code, Object msg) {
        if(code == CryptCallBack.success){
            //解密成功
            byte[] decodeResult = (byte[]) msg;
            CommonLog.logDebug("msg:" + new String(decodeResult,0,decodeResult.length));
        }else{
            //解密失败
            CommonLog.logError("encode error:" + msg);
        }
    }
});