用Gradle实现Java标记化
对于我当前的项目,我正在使用Java连接到MySQL数据库 我有一段代码,其中我使用Gradle将敏感数据库凭据替换到.java文件中,使用replaceToken在build目录中填充文件的新版本,并将该版本(使用替换的“detokenized”值)源代码化以编译.class文件 除了处理源.java文件的核心开发团队之外,我预计不会有其他人,只有包含编译的.class文件的.war。然而,通过使用vim查看这些.class文件,我可以看出,在编译的字节码中可以清楚地看到被删除的值 我的问题是,假设我的.class文件可能被潜在的恶意代理从服务器检索,是否有更好的标记化方法可以为数据库凭据提供另一层安全性? 另外,MySQL DB仅通过套接字访问,因此我不认为恶意代理可以单独使用DB凭据做任何事情,但我希望尽可能难以确定这些凭据用Gradle实现Java标记化,java,security,gradle,Java,Security,Gradle,对于我当前的项目,我正在使用Java连接到MySQL数据库 我有一段代码,其中我使用Gradle将敏感数据库凭据替换到.java文件中,使用replaceToken在build目录中填充文件的新版本,并将该版本(使用替换的“detokenized”值)源代码化以编译.class文件 除了处理源.java文件的核心开发团队之外,我预计不会有其他人,只有包含编译的.class文件的.war。然而,通过使用vim查看这些.class文件,我可以看出,在编译的字节码中可以清楚地看到被删除的值 我的问题是
谢谢你的建议!一般来说,我对Java和Gradle还是很陌生,但这个项目已经让我对可以做的事情有了更多的了解。下面是一些简单的代码,可以进行base64编码/解码 我使用的是河豚算法
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"))));
}
将值作为加密字符串传递,然后在runtime@ScaryWombat谢谢你的建议!您是否有此加密/解密实现的示例(链接或其他形式)?感谢您分享此实现示例!我会研究它,看看我是否能适应类似我的需要。