使用StringFog对SDK字符串进行加密

作者: 奔跑吧李博 | 来源:发表于2023-04-30 22:59 被阅读0次
Stringfog Github地址

一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具,正如名字所言,给字符串加上一层雾霭,使人难以窥视其真面目。

  • 支持app打包生成的apk加密。
  • 支持aar和jar等库文件加密。
  • 支持加解密算法的自主扩展。
  • 支持配置可选代码加密。
  • 完全Gradle自动化集成。
  • 不支持InstantRun。
原理

在编译时,将字节码字符串加密,打到aar、jar中。在运行时,将字符串解密。

混淆

StringFog和混淆完全不冲突,也不需要配置反混淆,实际上StringFog配上混淆效果会更好!

接入步骤
  1. 在项目的根build.gradle设置:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.github.megatronking.stringfog:gradle-plugin:4.0.1'
        classpath 'com.github.megatronking.stringfog:xor:4.0.1'
    }
}

2.在接入stringfog的模块下添加配置:

plugins {
    id 'stringfog'  //引入stringfog插件
}

import com.github.megatronking.stringfog.plugin.kg.RandomKeyGenerator

stringfog {
    enable true
    // 指定加解密的具体实现类,可以用默认实现的xor库或者aes-cbc库,也可以自己定制实现,记得配置dependencies
    implementation 'com.github.megatronking.stringfog.xor.StringFogImpl'
    // 指定需加密的代码包路径,可配置多个,未指定将默认全部加密
    fogPackages = ["com.xxx.networkmonitor"]
    // 可选(3.0版本新增):指定密钥生成器,默认使用长度8的随机密钥(每个字符串均有不同随机密钥),
    // 也可以指定一个固定的密钥:HardCodeKeyGenerator("This is a key")
    kg new RandomKeyGenerator()
    // 可选(4.0版本新增):用于控制字符串加密后在字节码中的存在形式, 默认为base64,
    // 也可以使用text或者bytes
    mode base64
}

dependencies {
    ...
    // 这里要和上面选用的加解密算法库一致,用于运行时解密。
    api 'com.github.megatronking.stringfog:xor:4.0.1'
}

配置好以上,编译后就会自动进行加密,无需在初始化或者调用方法了。

在demo的module中打出aar包,并对aar包进行反编译,进行对比:

原代码:


字符串加密后的代码:



将原有的明文字符串,转为了StringFog.decrypt(xxxx,xxxxxx)

加解密的字符串明文和暗文会自动生成mapping映射文件,位于outputs/mapping/stringfog.txt。

相关文章

  • 使用StringFog对字符串进行加密

    StringFog 一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具,正如名字所言,给...

  • iOS工具类(1)

    MARK: - 对字符串进行加密 MD5 加密: 对字符串进行分类处理 【16位与32位】 MARK: - 对字...

  • typescript md5

    typescript 项目中 使用MD5函数加密字符串 使用 hex_md5() 函数内部已经对字符串先进行utf...

  • AES-Java加密PHP解密

    需求:在安卓客户端中,使用AES算法对字符串内容加密并发送到后台,后台使用php对加密内容进行解密。 代码 1、J...

  • C# base-64 字符数组的长度无效

    问题场景 公司项目需要加密传输,使用 AES 进行加密,加密后转为 base64 字符串进行网络传输。结果发现接收...

  • 使用MessageDigest对字符串进行sha1、md5加密

    对字符串进行加密是一个比较常见的技术,比如对密码加密。MessageDigest对象是java里API使用起来非常...

  • NSURLProtocol无法监听AFNetworking3.0

    最近在做Safencrypt安全项目,其实就是对网络请求的数据进行报文级别的加密。为了简化SDK的使用,决定使用N...

  • iOS学习-数据加密

    在iOS端使用RSA加密的记录 一、需求: SDK开发,使用RSA加密和后台进行数据交互,后台是PHP要求:1、p...

  • python 加密解密

    Python 利用 pyDes对字符串进行解密 base64加密解密 md5加密

  • C基础—文件操作

    读取文本文件 文件的写入 文件的拷贝 获取文件的大小 文件加密 文件解密 字符串密码进行加密 对字符串密码进行解密...

网友评论

    本文标题:使用StringFog对SDK字符串进行加密

    本文链接:https://www.haomeiwen.com/subject/twrkjdtx.html