gpt4 book ai didi

java - 是否可以根据客户端的某些输入创建确定性的安全随机字符串?

转载 作者:行者123 更新时间:2023-12-01 16:22:19 27 4
gpt4 key购买 nike

两种情况:假设我的用户向我提供了以下内容:

long firstId;
long secondId;

UUID firstId;
long secondId;

我有一个变量来定义 secret 字符串:

private String mySecret = "2m75eB4xmAtMrz5cYQdSCch9R5R3xU6G";

我可以使用用户输入动态生成安全的随机字符串,而无需在代码中对字符串进行硬编码(这看起来非常不安全)吗?如果我的程序重新启动并且我提供相同的输入,我应该会生成相同的 secret 。

最佳答案

当你谈论安全性时,你应该提供一些有关上下文的信息以及你想做什么,对于随机字符串,我建议一个摘要:

MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] encodedhash = digest.digest(
originalString.getBytes(StandardCharsets.UTF_8));

private static String bytesToHex(byte[] hash) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}

您可以使用类似的输入字符串:

String input = mySecret + (firstId + secondId);

给定相同的输入,此摘要将始终为您提供相同的结果,但您将受到称为字典攻击的攻击,通过这种方式,破解者知道您正在使用什么算法“sha-256”可以从摘要中检索原始 secret 。

关于java - 是否可以根据客户端的某些输入创建确定性的安全随机字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com