【问题标题】:How to write library to decrypt something without write secret key in clear text?如何编写库来解密某些东西而不用明文写密钥?
【发布时间】:2020-11-24 13:38:53
【问题描述】:

我正在使用 utils 库来加密/解密数据,只需调用具有以下签名的方法:

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

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

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

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

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

【问题讨论】:

    标签: encryption key shared cleartext


    【解决方案1】:

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

    开始
    • 只需将密钥编码为 Base64。使用 Base64 解码功能放置编码的密钥。所以文字看起来不可读。在执行过程中,解码函数执行,原始密钥传递给解密函数

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

    高级方法:

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

    【讨论】:

    • 谢谢。我认为第一种简单方法和第二种高级方法的组合可能足够复杂,可以将密码隐藏在加密文本本身中。
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2012-07-02
    • 2012-01-22
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多