首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SHA-1改为SHA-512

从SHA-1改为SHA-512
EN

Stack Overflow用户
提问于 2017-01-18 05:40:24
回答 1查看 103关注 0票数 0

我正在尝试从SHA-1更改为SHA-512,以获得更好的安全性,但我不完全清楚如何进行更改。

这是我使用SHA-1的方法:

代码语言:javascript
复制
public static String sha1Convert(String password) {
            try {
                MessageDigest crypt = MessageDigest.getInstance("SHA-1");
                crypt.reset();
                crypt.update(password.getBytes("UTF-8"));
                return byteToHex(crypt.digest());
            } catch (NoSuchAlgorithmException | UnsupportedEncodingException ex) {
                Logger.getLogger(UserLoginManaged.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            }
        }

这是我一直在做的方法,但我不确定它是否完全有效,因为(如果我做错了什么,我很抱歉)。我将sha-1更改为sha-512,但是当我尝试登录我的应用程序时,它告诉我密码是错误的。所以我不确定是我的方法错了,还是我只是对某些东西一无所知。

代码语言:javascript
复制
public static String sha512Convert(String password) {
    try {
        MessageDigest sh = MessageDigest.getInstance("SHA-512");
        sh.reset();
        sh.update(password.getBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : sh.digest()) sb.append(Integer.toHexString(0xff & b));
        return sb.toString();
    } catch (NoSuchAlgorithmException e) {
        Logger.getLogger(UserLoginManaged.class.getName()).log(Level.SEVERE, null, e);
        throw new RuntimeException(e);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-01-18 05:50:39

从密码安全的角度来看,SHA-1和SHA-512之间几乎没有区别,两者都可以在1us以下进行计算。从SHA-1升级是有原因的,但这不是一个原因。

不要使用散列来保护密码,请使用PBKDF2 (也称为Rfc2898DeriveBytes)、password_ hash / password _verify、Bcrypt和类似函数。

如今,密码是通过尝试1000万单词列表中的密码来“破解”的。在笔记本电脑上,散列密码的时间小于1us,攻击者的速度会快几个数量级。除非是鱼叉钓鱼,否则攻击者会对最简单的90%感到满意。

重点是让攻击者花费大量时间通过暴力破解来寻找密码。

保护您的用户很重要,请使用安全的密码方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41707503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档