我是Java初学者。我正在开发可解密某些数据的应用程序。解密密钥被硬编码到软件中,因此可以通过分析字节码看到。
我知道不能完全防止逆向工程,所以我想做的就是使过程尽可能地艰巨。
我的想法不是直接将密钥放入代码中,而是将其进行某种转换。例如,我可以写-
private static final byte[] HC256A = Hex
.decode("8589075b0df3f6d82fc0c5425179b6a6"
+ "3465f053f2891f808b24744e18480b72"
+ "ec2792cdbf4dcfeb7769bf8dfa14aee4"
+ "7b4c50e8eaf3a9c8f506016c81697e32");
这样,查看字节码的人无法立即读取它。但是将必须遵循逻辑并对其进行转换,这在字节级别上不会那么容易。
那么你们怎么看?这有用吗?除了十六进制解码,什么是最好的转换?是否有其他方法可以保护硬编码的解密密钥?
感谢您的所有建议。
问题内容: 我正在编写我的第一个使用OAuth的应用程序。这是针对桌面应用程序的,而不是网站或移动设备,在这些应用程序上访问二进制文件会更加困难,因此我关注如何保护应用程序的密钥和机密。我觉得查看编译后的文件并找到存储密钥的字符串很简单。 我是否反应过度,或者这是桌面应用程序的真正问题(使用已知解决方案)? 该项目正在用Java进行编码,但是我也是C#开发人员,因此任何用于.NET的解决方案也将不
问题内容: 我正在使用Java开发应用程序,但是我不会发布代码。问题是,我测试了其中的一个jar反编译器,它几乎可以完美地从我的jar文件中获取代码!我的问题是如何在不提取代码的情况下分发jar文件? 问题答案: 由于Java在编译过程中保留了大多数“元数据”(允许动态加载和反射),因此直接编译(不仅反汇编)已编译的类文件是一种直接的方法。这就是为什么恢复的代码与原始代码非常相似的原因。 虽然不是
问题内容: 众所周知,有很多Java反编译器工具可以将.class转换为.java文件。 因此,我们需要保护.java文件免于反编译。我知道这是一个大话题,也许没有止境。 通常,有两种方法:混淆器和定制的类加载器。 是否有将这两种方式结合在一起的成熟解决方案或开源框架? 另一个方面与exe4j有关,它将jars打包到exe文件中,似乎可以保护java代码,因为我们看到的是exe文件而不是jar
我正在使用AES加密实现一个加密字符串的程序,并希望将我的“密钥”保存在一个文件中,而不是在源代码中硬编码。 但是,这给我带来了一个问题,我如何保护这个秘密密钥不被他人看到? 如果我要再次加密这个“密钥文件”,我将不得不再次处理同样的问题。 我该如何处理这些问题? 参考:https://wiki.sei.cmu.edu/confluence/display/java/MSC61-J.不要使用不安全
PEMException:创建加密私钥时出现问题:System.NullReferenceException:对象引用未设置为对象的实例。在org.bouncycastle.openssl.pemreader.readprivateKey(PemObject PemObject) 下面是Decrypt方法的代码:
我试图保护Spring BootAPIendpoint。我希望只传递api密钥和秘密作为头的一部分来调用api。我尝试了这个链接中发布的代码。但是在头中使用授权调用api时拒绝访问。使用API key和secret保护Spring Boot API我想知道我应该作为头部的一部分传递什么,这样我就可以从API获得成功的响应。我做了以下步骤:我在application.properties中添加了以下