java–android sha512的例子

java–android sha512的例子,第1张

概述>有人可以提供一个关于如何使用sha512盐的PW_HASH_ITERATION_COUNT次迭代来散列密码的java/android示例吗?在伪代码中:hash=sha512(concat(pw,salt));for(i=1;i<PW_HASH_ITERATION_COUNT;i++){hash=sha512(concat(hash,concat(pw,salt)));}其中z=concat(x,y

>有人可以提供一个关于如何使用sha512盐的PW_HASH_IteraTION_COUNT次迭代来散列密码的java / androID示例吗?

在伪代码中:

hash = sha512(concat(pw,salt));for (i = 1; i<PW_HASH_IteraTION_COUNT; i++){    hash = sha512(concat(hash,concat(pw,salt)));}

其中z = concat(x,y)是x和y的串联.

也许用MessageDigest?
>你会建议PW_HASH_IteraTION_COUNT?最多迭代次数,以便甚至可以在某些旧设备上运行(2.1)

更新更新更新

由于充分的理由,我们将使用bcrypt来加密我们的密码.我们使用jBCrypt实现.

无论如何..回答问题……这是上面使用SHA-512和MessageDigest的问题的代码:

import java.io.UnsupportedEnCodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import de.seduceme.utils.Base64;public class PwStorage {    public static int PW_HASH_IteraTION_COUNT = 5000;    private static MessageDigest md;    public static voID main(String[] args) {        String pw = "teüöäßÖst1";        String salt = "e33ptcbnto8wo8c4o48kwws0g8ksck0";        try {            md = MessageDigest.getInstance("SHA-512");        } catch (NoSuchAlgorithmException e) {            e.printstacktrace();            throw new RuntimeException("No Such Algorithm");        }        String result = PwStorage.hashPw(pw, salt);        System.out.println(result);        // result: 2SzT+ikuO9FBq7KJWulZy2uZYujLjFkSpcOwlfBhi6VvajJMr6gxuRo5WvilrmlcM/44u2q8Y1smulIDZQrLCQ==    }    private static String hashPw(String pw, String salt) {        byte[] bSalt;        byte[] bPw;        try {            bSalt = salt.getBytes("UTF-8");            bPw = pw.getBytes("UTF-8");        } catch (UnsupportedEnCodingException e) {            throw new RuntimeException("Unsupported EnCoding", e);        }        byte[] digest = run(bPw, bSalt);        for (int i = 0; i < PW_HASH_IteraTION_COUNT - 1; i++) {            digest = run(digest, bSalt);        }        return Base64.encodeBytes(digest);    }    private static byte[] run(byte[] input, byte[] salt) {        md.update(input);        return md.digest(salt);    }}

随着this Base64 lib.

解决方法:

在这里阅读my post,特别是我链接到password hashing的帖子.

>理想情况下,您应该使用bcrypt或scrypt而不是自己进行密码散列.
>但如果你必须,你应该至少运行几千次迭代,最好是更多.

是的,您可以使用MessageDigest for SHA-512.每次调用摘要时,对象的状态都会自动重置,这非常方便 – 您可以立即开始更新下一次迭代.

但我仍然认为你应该使用bcrypt或scrypt.为了您自己的利益,以及您的用户的利益. 总结

以上是内存溢出为你收集整理的java – android sha512的例子全部内容,希望文章能够帮你解决java – android sha512的例子所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1098457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存