如何编写库以在不以明文形式写入密钥的情况下解密某些内容?

How to write library to decrypt something without write secret key in clear text?

我正在使用实用程序库 encrypt/decrypt 数据,只需调用具有以下签名的方法:

String encrypt(String clearText, String secretKey)
String decrypt(String encryptedText, String secretKey)

两种encrypt/decrypt方法使用相同的逻辑和加密。这意味着方法的相同输入总是产生相同的输出。

现在的目的是编写一个辅助方法来解密以前使用加密方法存储在文件中的一些连接字符串。此辅助方法应调用解密函数,使用明文形式的 secretKey 调用它:

String connectionStringEncrypted = Utils.getProperty("connectionString", "C:\Path\To\application.properties");
String connectionString = Utils.decryptConnectionString(connectionStringEncrypted);

问题是:如何避免在辅助方法中以明文形式写入密钥Utils.decryptConnectionString?

有太多简单和复杂的方法可以解决这个问题 我可以告诉一些,从简单方法

开始
  • 只需将密钥编码为 Base64。放置具有Base64解码功能的编码密钥。所以文字看起来不可读。在执行期间,解码函数执行并将原始密钥传递给解密函数

  • 使用不同的静态变量(易于访问)将密钥拆分并放置在不同的 类 中,并在解密方法中传递所有静态变量以附加以形成有效的解密密钥 注意:- 这些简单的步骤可以由 pro

    预测

高级方法:

  • 使用RSA算法使用不同的密钥进行加密和解密(即public和私钥)
  • 您也可以尝试将密钥隐藏在密文中。在这里你不需要使用静态键。该过程包括生成新密钥,加密文本并将密钥隐藏在加密文本中,保存在文件中,解密过程中从文件中获取加密文本,提取密钥,解密数据。注意:- 必须小心处理此方法