为了账号安全,请及时绑定邮箱和手机立即绑定

SHA512 的函数对不同的输入返回相同的结果

SHA512 的函数对不同的输入返回相同的结果

HUX布斯 2022-10-07 16:20:13
我正在尝试实现一个登录屏幕,您的所有输入都由 SHA 512 加密,稍后对该功能进行一些小调整(反转字符串,扩展长度)。对于我的用户名,加密效果很好,但另一方面,无论我输入什么,我的密码都会给我相同的结果。 public static String password_encrypt(String input) {    try {        String password_ = input;        int iterations = 250000;        String salt = "salt";        SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512");        char[] passwordChars = password_.toCharArray();        KeySpec spec = new PBEKeySpec(passwordChars, salt.getBytes(), iterations, 256);        SecretKey key = factory.generateSecret(spec);        byte[] passwordHash = key.getEncoded();        SecretKey secret = new SecretKeySpec(key.getEncoded(), "AES");        input = secret.toString();    } catch (NoSuchAlgorithmException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (InvalidKeySpecException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    return input;}然后我检查一个数组是否有一个可以放置信息的地方,如果有一个存储在那里。 for (int i = 0; i < username.length; i++) {        System.out.println("username " + username[i]);        if (name.equals(username[i])) {            System.out.println("Dieser Username ist bereits vergeben!");            break;        }        if ("empty".equals(username[i]) || null == username[i]) {            username[i] = name;            stelle = i;            System.out.println("Username wurde vergeben");            break;        }         else if (name.equals(username[i])) {            System.out.println("1234");        }    }数组 username[] 和 password[] 由我的构造函数填充为“空”或 null。我的主要问题是:无论密码输入是什么,我都会得到相同的密钥:javax.crypto.spec.SecretKeySpec@fffea4cc如果我只是比较字符串以确定它是否正确,这会给我带来很大的安全漏洞......
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

提供的代码有几个问题,首先它使用了静态弱盐。虽然有比 PBKDF2(➽ Argon2、BCrypt、SCrypt)更好的密码保护算法,但如果实施正确,它可以使用。在那里,我想推荐著名的库Defuse,它使密码哈希和验证变得轻而易举,它可以作为单个类文件包含在内。

顺便说一句,散列密码无法反转,散列与加密不同。


查看完整回答
反对 回复 2022-10-07
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信