`
cowgun886
  • 浏览: 1034 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

密码加盐

阅读更多
我们以前的加密方法是否对这种行为失效了呢?其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。下面请见代码:
// 对密码进行加盐后加密,加密后再通过Hibernate往数据库里存        String changedPswd=DigestUtils.md5Hex(name+pswd);

就是这样简单,上面代码中盐就是用户名,可以的话还可以用用户注册时的邮件,注册时间等非空信息(如果是空信息这个加盐处理会失效)。
下面是数据库中两个用户的记录,他们的实际登录密码都是123456,但光看用户记录是完全看不出来的。这下别有用心的人打开数据库看到的密码都完全不一样,他以前的手段就失效了。

因为密码是md5处理的密码加用户名,因为用户名都不相同,所以即使密码相同的用户,保存到数据库中密码也是不同的。

import org.apache.commons.codec.digest.DigestUtils;

public class AtomicDemo extends Thread{

public static String key="keys";
public static void add(int i) throws InterruptedException{
System.out.println(DigestUtils.shaHex(key)+"======"+i+"======="+DigestUtils.shaHex(key+i));

}
public void run() {
for (int i = 0; i < 10; i++) {
try{
add(i);
sleep(10);
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception{
Thread thread=new AtomicDemo();
thread.start();
}


}

运行结果

5944ae25418ceabcf285dca1d721b77888dac89b======0=======fb61f74ca71dc6d48c7457f5e16b3552f06f0c8d
5944ae25418ceabcf285dca1d721b77888dac89b======1=======5c26398bddc6a83d04a0f2c99b6d48aaaeefca7d
5944ae25418ceabcf285dca1d721b77888dac89b======2=======054a54de9e39630979ffccad0294bccb9e648ea2
5944ae25418ceabcf285dca1d721b77888dac89b======3=======a32cfde3c1f0041ac5f5d4b8d89522b5094c9804
5944ae25418ceabcf285dca1d721b77888dac89b======4=======de5710c8cedbf9b2c4ae26f10ed845b15118db01
5944ae25418ceabcf285dca1d721b77888dac89b======5=======c1523fc3afabfb5db883605324252c79787938b9
5944ae25418ceabcf285dca1d721b77888dac89b======6=======60803f24f49154d9e65a4acf9c7c6b1cb130c8f2
5944ae25418ceabcf285dca1d721b77888dac89b======7=======881a14c6013d51ca24f152973a1fd51da37d1143
5944ae25418ceabcf285dca1d721b77888dac89b======8=======ef15a93a59f824a73fe1c054140f15f200b8a4b2
5944ae25418ceabcf285dca1d721b77888dac89b======9=======d44cc54ccf1e357922c5878df32e078084b0c531
可以比对出加盐之前和之后的结果
分享到:
评论

相关推荐

    java生成md5密码加盐

    本文将详细介绍Java和SpringBoot如何实现加盐的MD5密码生成。 首先,MD5是一种单向哈希函数,它将任意大小的数据转换为128位的哈希值,通常以32位的十六进制字符串表示。其优点是计算速度快,但缺点是容易遭受彩虹...

    salt_hash.zip_Node.js_密码加密与解密_密码加盐

    本案例主要关注的是如何利用Node.js的crypto模块来进行密码加密与解密,并且涉及到了密码加盐(salt)的策略。以下是对这两个关键知识点的详细说明。 首先,我们来看密码加密。在Node.js中,crypto模块是内建的,...

    计算机后端-PHP视频教程. php之thinkphp132 注册密码加盐.wmv

    计算机后端-PHP视频教程. php之thinkphp132 注册密码加盐.wmv

    关于python中密码加盐的学习体会小结

    ### 关于Python中密码加盐的学习体会小结 在网络安全领域,为了保护用户信息的安全,密码的加密方式显得尤为重要。本文将详细介绍如何在Python中使用密码加盐技术,并结合具体的代码示例进行深入分析。 #### 密码...

    java实现Md5加盐加密算法

    对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载

    加密解密工具支持随机盐(带源码)

    一个多功能加密解密工具,支持QQtools、MD5、DES、AES、SHA256、Base64 等多种加密解密方式,并支持随机盐,附有源码,可直接编译使用。

    密码哈希盐加密例子

    密码哈希盐加密测试例子,一个不可反算的,绝对安全的加密

    加盐加密保存的通用方案

    网络安全问题日益严峻的今天,原始密码和简单非可逆加密算法已经不足以提供安全的系统服务,所以加盐加密技术使用越来越普遍。 本文档系统的介绍了加盐加密的原理和实现方案。 由四哥许坤整理发布,...

    MD5加盐算法 含mysql数据库

    一个简单的MD5加盐算法,对存入数据库的密码进行加密达到保护用户信息的作用

    level-users:存储和获取用户,为他们的密码加盐,将它们保存到磁盘等

    对他们的密码加盐,将它们保存到磁盘。 用法 将 leveldb 实例传递给Users构造函数。 如果您的数据库在网络上,我建议使用来存储数据库的元数据和 。 有关客户端支持,请参阅 。 var db = level ( './db' ) var ...

    C#使用 Salt + Hash 来为密码加密

    本文主要介绍了几种常见的破解密码的方法,为密码加盐(Salt)以及在.NET中的实现等。具有一定的参考价值,下面跟着小编一起来看下吧

    MD5加密实例(加盐)

    但需要注意的是,由于MD5本身存在碰撞问题(即不同的输入可能会产生相同的哈希值),现代密码学建议使用更安全的哈希函数,如SHA-256或bcrypt,配合加盐,以提供更强的密码保护。 在压缩包中的"MD5的实例(加盐)...

    (Java密码加密)MD5方式

    因此,现代密码存储通常采用更安全的算法,如SHA-256或bcrypt,并结合加盐(salt)和多次迭代以提高安全性。 总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大...

    AES 128位加解密C++源码(加盐)

    "加盐"是密码学中的一个术语,用于增强密码或密钥的安全性。在AES加解密中,盐通常是一个随机的预处理值,与原始密钥结合,生成一个新的、唯一的工作密钥。这样即使相同的明文和密钥被多次使用,每次加密的结果也会...

    密码存储中MD5算法的安全性分析2

    综上所述,MD5算法在密码存储中的安全性已不再可靠,需要结合盐值和其他强化措施,如使用更安全的哈希算法(如SHA系列),以及密码加盐、迭代哈希等方法,以提升密码存储的安全性。在实际应用中,应当重视密码策略,...

    易语言MYSQL密码加密

    哈希是一种不可逆的转换过程,将原始数据转化为固定长度的字符串,而加盐则是为了增加破解哈希的难度,通过在原始密码前或后添加随机数据,使得即使相同的密码哈希后也变得独一无二。 "password"在这里显然是指需要...

    (源码)基于Spring Boot和WebSocket的在线聊天系统.zip

    密码加盐加密存储 HTTPS协议支持 防止URL暴露敏感信息 4. WebSocket通信 基于WebSocket的实时消息推送 支持多用户同时在线聊天 5. 数据库支持 使用MySQL存储用户信息和聊天记录 通过JdbcTemplate进行数据库...

    基于openssl的AES256 的CBC模式的加解密处理类,可以和java/js互通,带加盐

    在加盐过程中,盐通常与密码一起存储,并在解密时使用同样的盐进行解密。 `aes256.cpp`和`aes256.h`文件很可能是定义了加密和解密类的实现和接口。这些文件可能包含了初始化AES环境、设置密钥和盐、执行加密和解密...

Global site tag (gtag.js) - Google Analytics