从SHA-1更改为SHA-512

时间:2017-01-17 21:40:24

标签: java security sha

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

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

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
DispatcherUnhandledException += App_DispatcherUnhandledException;
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;

这是我一直在做的方法,但我不确定它的工作是否完好,因为(如果我做错了,我很抱歉)。我正在将sha-1更改为sha-512,但是当我尝试登录到我的应用程序时,它告诉我密码错误。所以我不确定我是否认为这个方法错了,或者我是不是对某些事情一无所知。

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;
            }
        }

1 个答案:

答案 0 :(得分:2)

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

不要使用哈希来保护密码,使用PBKDF2(又名Rfc2898DeriveBytes),password_hash / password_verify,Bcrypt等功能。

密码现在通过尝试1000万字列表中的密码而被“破解”。散列密码的时间是<在笔记本电脑上1us,攻击者将快几个数量级。除非它是矛炸的,否则攻击者会对最简单的90%感到满意。

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

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