密码保管_iphone储存密码怎么看

密码保管_iphone储存密码怎么看就目前为止,还没有能够逆向激活成功教程SHA256的工具.他们所谓的激活成功教程无非是不断的去“碰撞”尝试

密码保管_iphone储存密码怎么看"

在我们写后段的时候,经常会遇到需要使用数据库存放密码的操作。 但是对于密码等敏感字符,考虑安全性,直接原原本本的存放在数据里是绝对不安全的。 所以就需要对密码进行基于各种加密算法的加密。

#SHA-256 简单了解
#SHA-256 是什么?
所谓SHA-256其实本质是一套单向哈希函数(或者叫做不可逆散列算法)。 他可以将一个字符串通过特定的计算过程后得出一个长度为256字节的Hash码。 该字符串里面任意一个字变动(甚至是大小写)都会尝试完全不一样的两条散列码。

此外我们还需要特别记住,SHA-256本质是一套不可逆算法。 即字符串转化为散列码后,无法通过散列码将密码还原回来。

至于这套SHA-256的具体计算过程,如果有兴趣自行Google,这里主要教大家使用。 不深入介绍底层实现算法。

#SHA-256 激活成功教程?
可能我们会在很多地方看到SHA256激活成功教程之类的工具,但是他们是如何实现的呢? 就目前为止,还没有能够逆向激活成功教程SHA256的工具.他们所谓的激活成功教程无非是不断的去 “碰撞”尝试。也就是不断的通过猜测源密码去生成SHA256哈希码值。所以他是相对安全的。 但是部分激活成功教程网站会讲所有已被激活成功教程的密码记录起来,方便直接找到。所以就有了加盐(Salt)

#防止散列码被不断的碰撞猜到 —— 加盐(Salt)
假设我们有一个需要加密的字段 abc123!@# 和 自定义盐 ABC

先将加密字段的末尾加上盐(abc123!@#ABC) 进行SHA-256加密->得到任意 256 长度的散列码。

再将得到的 256位散列码 在末尾加上我们的盐,再计算一次SHA-256的值->得到加了盐的256位散列码。

此时我们存进数据库的就是加了盐的256位散列码。

#加密后的密码验证
这个就非常简单,SHA-256是不可逆加密,所以我们只需要将用户输入进来的密码,再过一遍SHA-256加密计算。 然后再和数据库内存的加密后密码对比,如果相同,说明用户输入的密码是正确的。

#SHA-256 用它!
#实现代码
这里用到了 Apache 工具包

import org.apache.commons.codec.binary.Hex; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class SHA256Util { 
    public static final String SHA256 = "SHA-256"; // 加盐的SHA256加密 // 可能抛出 NoSuchAlgorithmException 错误,表示加密格式有误。 public static String encrypt_SHA256_Salt(String str, String salt) throws NoSuchAlgorithmException{ 
    // 进行加盐加密后给他放回 return encrypt_SHA256(encrypt_SHA256(str + salt) + salt); } // 普通的SHA256加密 private static String encrypt_SHA256(String str) throws NoSuchAlgorithmException{ 
    // 获取加密格式 MessageDigest instance = MessageDigest.getInstance(SHA256); // 进行加密 instance.update(var.getBytes(StandardCharsets.UTF_8)); // 通过Hex的encodeHex函数,将每个byte都拆成了两个十六进制的数,并组合 return String.valueOf(Hex.encodeHex(instance.digest())); } } 
#使用代码 import org.yyc.util.SHA256Util; import java.security.NoSuchAlgorithmException; public class UserServiceImpl{ 
    public final String SALT = "ABC"; public String register(String email, String passwd) { 
    try { 
    String encryptedPasswd = SHA256Util.encrypt_SHA256_Salt(passwd, SALT)); } catch (NoSuchAlgorithmException exception) { 
    return "Failed to register."; } // 将密码存进数据库 return "Register successful."; } public String login(String email, String passwd) { 
    String userPasswd; // 此处省略从数据库获取到用户密码的部分 if (userPasswd.equals(SHA256Util.encrypt_SHA256_Salt(passwd, SALT))) { 
    return "Login successful."; } else { 
    return "The password is incorrect."; } } } 

今天的文章
密码保管_iphone储存密码怎么看分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81338.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注