Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Gradle实现Java标记化_Java_Security_Gradle - Fatal编程技术网

用Gradle实现Java标记化

用Gradle实现Java标记化,java,security,gradle,Java,Security,Gradle,对于我当前的项目,我正在使用Java连接到MySQL数据库 我有一段代码,其中我使用Gradle将敏感数据库凭据替换到.java文件中,使用replaceToken在build目录中填充文件的新版本,并将该版本(使用替换的“detokenized”值)源代码化以编译.class文件 除了处理源.java文件的核心开发团队之外,我预计不会有其他人,只有包含编译的.class文件的.war。然而,通过使用vim查看这些.class文件,我可以看出,在编译的字节码中可以清楚地看到被删除的值 我的问题是

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

我有一段代码,其中我使用Gradle将敏感数据库凭据替换到.java文件中,使用replaceToken在build目录中填充文件的新版本,并将该版本(使用替换的“detokenized”值)源代码化以编译.class文件

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

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

另外,MySQL DB仅通过套接字访问,因此我不认为恶意代理可以单独使用DB凭据做任何事情,但我希望尽可能难以确定这些凭据


谢谢你的建议!一般来说,我对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谢谢你的建议!您是否有此加密/解密实现的示例(链接或其他形式)?感谢您分享此实现示例!我会研究它,看看我是否能适应类似我的需要。