为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Gradle 进行 Java 标记化

使用 Gradle 进行 Java 标记化

繁星淼淼 2022-01-12 17:13:56
对于我当前的项目,我正在使用 Java 连接到 MySQL 数据库。我有一些代码,其中我使用 Gradle 将敏感的数据库凭据替换到 .java 文件中,使用 ReplaceTokens 在构建目录中填充文件的新版本并获取该版本(使用替换的“detokenized”值) 编译 .class 文件。除了处理源 .java 文件的核心开发团队之外,我预计不会有任何人,只有 .war 包含已编译的 .class 文件。但是,通过使用 vim 查看这些 .class 文件,我可以看出去标记化的值在编译的字节码中是显而易见的。我的问题是,假设我的 .class 文件可以被潜在的恶意代理从服务器检索到,是否有更好的标记化方法可以为数据库凭据提供另一层安全性?有关其他信息,MySQL DB 仅通过套接字访问,因此我不认为恶意代理可以单独使用 DB 凭据做任何事情,但我希望尽可能难以确定这些凭据。感谢您的任何建议!总的来说,我对 Java 和 Gradle 还是很陌生,但是这个项目已经让我对可以做什么有了很多了解。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

这是一些执行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"))));

}


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信