当前位置: 首页 > 知识库问答 >
问题:

使用DexGuard加密资产(JSON)

柳英豪
2023-03-14

我使用DexGuard v7.3.18,我想加密存储在资产/json中的JSON文件,我在类中访问这些文件,就像这样:

inputstream=context.get资产(). open("json/"jsonFileName)

我配置了dexguard项目。pro具有各种选项,如:

  1. -encryptassetfiles资产/json/**。json
  2. -encryptassetfiles资产/json/**

但是两者都没有帮助加密JSON文件。根据DexGuard文档:

-EncryptAssetFile[file_filter]指定应加密的Android资产文件。资产文件存储在资产目录中,可以包含任何数据。模糊处理步骤可以自动加密它们,并确保它们在运行时被动态解密。为了使其工作,必须对资产文件进行流式传输,并且必须将其名称指定为字符串常量。这意味着您的代码必须按如下方式调用AsssetManager:open(“MyAssetFile”)然后您的配置可以指定“-encryptAssetFile资产/MyAssetFile”。仅适用于混淆Android代码时。

我使用Apktool验证了配置的APK。我错过了什么?

共有1个答案

薄龙光
2023-03-14

您需要以这种方式加载资产文件,以便DexGuard加密介子文件:

AssetManager assetManager = getAssets();  
InputStream is = assetManager.open("json/file1.json");
InputStream is2 = assetManager.open("json/file2.json");
.......(individually load each file)

换句话说,文件名必须以常量字符串的形式出现在每个打开的方法中。

否则,Dexguard将不会加密文件,或者加密的文件无法正确解密。

希望这有帮助<大卫

 类似资料:
  • 我使用DexGuard,用这个在发布模式下构建项目: 一切都很好,但现在我需要阻止另一个类进行加密,我添加了行以不加密ExampleBuilder: 现在,当我尝试使用库时,我得到一个错误: 生成的清单(来自dexguard影响的AAR),其中是此错误,片段中是错误:

  • 我有一个艰难的时间与dexGuard使它不删除我访问这种方式的资源: int resourceId=getResources()。getIdentifier(“图片”、“数组”、getActivity()。getPackageName()); 当我执行应用程序时,会出现以下异常: JAVAlang.RuntimeException:无法启动android活动。所容纳之物res.Resources$

  • 我知道我将文本文件放在了assets\chat1的位置。txt,我的代码也可以与其他txt一起使用,但不知何故,我总是遇到以下错误: 发生异常。 错误(无法加载资产:assets/chat1.txt) 我的代码: pubspec.yaml

  • 以下是错误按摩: 无法加载Asset:Assets/Images/Waiting.png当引发异常时,这是堆栈图像提供程序:AssetImage(bundle:null,name:“Assets/Images/Waiting.png”)图像键:AssetBundleImageKey(bundle:PlatformAssetBundle#e3e67(),name:“Assets/Images/Wai

  • 跟随https://developer.android.com/training/secure-file-sharing/index.html,并能够共享文件在内部目录(/data/data/pack/files/xxx/)的应用程序到客户端应用程序使用file提供程序。 如何将资产文件夹(而不是内部目录)中的文件共享到客户端应用程序。 谢谢

  • 我需要在iPhone或iPad上加密字符串(实际上是XML文件),然后用.NET应用程序解密。感谢David Veksler在这里提出的问题“.NET和iPhone之间的AES互操作性?”,以及在这里发表的博客文章http://automagical.rationalmind.net/2009/02/12/aes-interoperability-between-net-and-iPhone/。