Java 验证文件-安全问题
我有一个名为a.txt的文件,我在java应用程序中使用它。此文件与应用程序一起提供,我希望有一种方法(在应用程序中)验证它确实是我的文件,而不是伪造的文件 我有两个想法,但都容易受到攻击:Java 验证文件-安全问题,java,security,encryption,Java,Security,Encryption,我有一个名为a.txt的文件,我在java应用程序中使用它。此文件与应用程序一起提供,我希望有一种方法(在应用程序中)验证它确实是我的文件,而不是伪造的文件 我有两个想法,但都容易受到攻击: 我将签名、A.txt和公钥作为纯文本发送到应用程序中,但如果攻击者只是对自己的文件进行签名,替换签名、A.txt和公钥,验证将通过 我将公钥硬编码到java应用程序中-除了反编译之外,如果我将A.txt发送给人员A,将B.txt发送给人员B,并且他们交换了txt,他们都将成功验证,我更希望人员A仅成功验证A
我怎样才能做到这一点而不被攻击?或者我如何实现我的方法以使它们安全?在代码中隐藏加密密钥可能非常危险。Reinard对能够加密和解密文件的web服务有很好的了解 另一种选择可能是将密钥隐藏在注册表中或隐藏目录中的某个位置。您还可以尝试构建自己的算法来构建解密密钥 但是反编译呢?对于大多数开发人员来说,这一直是一个主要的难题。如何在代码中正确隐藏秘密?您可以尝试使用可以减慢反编译过程的应用程序打包程序或扰码器。您还可以得到一个java模糊器,使代码更难进行反向工程
我真的希望这能有所帮助。一个安全的方法是让第三方web服务对文件进行加密和解密。虽然您不能100%保证,但可以在文件上运行md5或类似程序来验证它生成的哈希代码。如果有一个与hashcode相同的文件,那么它将是一个完全不同的文件,可能无法正常工作。加密它,然后在程序中解密,这将减少发生错误的机会attack@nafas此方法的攻击与1)完全相同@JamesKPolk Yes,“如何处理此问题?”