Gradle的Java标记化



对于我当前的项目,我正在使用Java连接到MySQL数据库。

我有一段代码,其中我使用Gradle将敏感的数据库凭据替换到.java文件中,使用ReplaceTokens在构建目录中填充该文件的新版本,并获取该版本(使用替换的"解密"值(以编译.class文件。

除了核心开发团队之外,我预计不会有人处理源.java文件,只会处理包含编译的.class文件的.war。然而,通过使用vim查看这些.class文件,我可以看出,在编译的字节码中可以清楚地看到解密的值。

我的问题是,假设一个潜在的恶意代理可以从服务器上检索我的.class文件,有没有更好的标记化方法可以为数据库凭据提供另一层安全性

有关其他信息,MySQL数据库仅通过套接字访问,因此我不认为恶意代理可以单独使用数据库凭据进行任何操作,但我希望尽可能难以确定这些凭据。

谢谢你的建议!总体来说,我对Java和Gradle还很陌生,但这个项目已经让我对可以做什么有了很多了解。

以下是一些简单的代码,用于base64编码/解码

我将Blowfish用于algo

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public static String encrypt(String text) throws Exception
{
SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algo );
Cipher cipher = Cipher.getInstance(algo);
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sksSpec);
byte[] encrypt_bytes = cipher.doFinal(text.getBytes());
return new String( Base64.encodeBase64(encrypt_bytes) );
}
public static String decrypt(String encrypt_str) throws Exception
{
SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algo);
Cipher cipher = Cipher.getInstance(algo);
cipher.init(Cipher.DECRYPT_MODE, sksSpec);
return new String(cipher.doFinal( Base64.decodeBase64(encrypt_str.getBytes("UTF-8"))));
}

相关内容

  • 没有找到相关文章

最新更新