当我从eclipse 的java源代码文件创建一个可运行的jar文件时,我相信它创建了一个类文件,然后可以由JVM运行.
我问这个的原因是因为我将创建一个保存所有密码的java应用程序.该应用程序将包含一个要求输入密码的界面,然后如果密码正确则显示密码.以下是关于此主题的问题:
对于未提出的问题:如果您的密码在源代码中,它将以非常容易找到的方式存在于类文件中.
可运行的jar文件是一个jar文件(即带有jar后缀的zip文件),其中包含类文件和包含有关启动哪个类的信息的特殊文件.
您可以反编译字节代码:http://www.program-transformation.org/Transform/JavaDecompilers以获取源代码.但您实际上可以在字节代码中看到密码而不反编译它
是.在java -jar xxx中,java表示使用名为xxx的jar文件运行jvm
如果您知道创建的语言和工具,您应该能够像处理类文件一样反编译exe文件.即使源代码中的密码不容易在.exe文件中找到.所以,jar文件有点像exe文件,但它们与你描述的不同.
如果要创建应用程序来维护密码,请使用您在启动时作为应用程序用户提供的主密码对存储的密码进行加密.永远不要将密码存储在源代码中.
Java类文件可以反汇编回可读的Java代码.但更简单的是,您可以从已编译的类文件中提取所有密码,因为它们以纯文本形式存储(例如,尝试strings
在GNU机器上执行命令).
所以,不,密码在类文件中本身并不安全(因此不在jar存档中,因为jar可以很容易地解压缩).
您需要做的是实现某种加密,并让您的程序将密码保存在加密文件中.然后,您的程序将需要您输入解密密钥,甚至可以解压缩密码.密钥的长度应不包含在Java程序中,应提供你每次运行程序时.