密码加密md5和加盐处理

关于密码加密处理md5和加盐处理

md5 加密:
用户注册时将加密后的密码发送给后端存储当登陆的时候,
再将加密后的密码和数据库中加密的密码相匹配。
此加密无须解密

一.md5的在vue中的用法:

1.安装。

npm install js-md5 -D

2.使用。
(1)项目中引入md5模块。

import md5 from “js-md5”

(2)在main.js里面将md5转换为vue原型

import md5 from "js-md5"
Vue.prototype.$md5=md5

3.示例

<input type="number" v-model="value"> 
console.log("加密密码:"+ this.$md5(this.value))

二.md5的在react中的用法:

第一步:
npm 安装js-md5,文件根目录下安装,指令如下

npm install --save js-md5      //安装到生产环境

第二步:
引入 js-md5
在项目入口文件 index.js 里 引入 js-md5

import md5 from 'js-md5'
挂载到react的原型上
React.Component.prototype.$md5 = md5

第三步:
去组件中使用

import React, { Component } from 'react' 
class friend extends Component {  
   componentWillMount () {   
       let str = '123456' 
       let data = this.$md5(str)   
        console.log(data) // e10adc3949ba59abbe56e057f20f883e 
         }  
    render() { 
       return (  
           <div className="friend"> friend朋友</div>   
            )}
      } 
export default friend

三加盐处理

直接对重要数据进行MD5处理后,反向解密确实难度很大,但还是可以找出破绽的,如果名为李自成的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。那么我们以前的加密方法是否对这种行为失效了呢?其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。下面请见代码:
// 对密码进行加盐后加密,加密后再通过Hibernate往数据库里存

String changedPswd = DigestUtils.md5Hex(name + pswd);

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中使用MD5加密密码加盐可以通过以下步骤实现: 1. 导入相关的库和类。首先,需要导入java.security包中的MessageDigest类,该类提供了MD5加密的方法。 2. 创建一个方法来进行MD5加密。可以创建一个名为`encryptPassword`的方法,并传入两个参数:密码和盐值。方法的返回值应该是加密后的密码。 3. 在方法中对密码和盐值进行拼接。可以使用字符串的加法操作符将密码和盐值拼接在一起。 4. 创建一个MessageDigest对象,使用 getInstance("MD5")方法获取该对象。MessageDigest类提供了MD5加密算法的实现。 5. 使用MessageDigest对象对拼接后的字符串进行加密。可以调用`digest()`方法对字符串进行加密,该方法返回一个字节数组。 6. 将加密后的字节数组进行转换。可以使用`DatatypeConverter`类提供的`printHexBinary()`方法将字节数组转换成十六进制字符串。 7. 将转换后的字符串作为加密后的密码返回。 下面是一个示例代码片段: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5SaltExample { public static String encryptPassword(String password, String salt) { String saltedPassword = password + salt; try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashedPassword = md.digest(saltedPassword.getBytes()); // Convert byte array to hex string StringBuilder sb = new StringBuilder(); for (byte b : hashedPassword) { sb.append(String.format("%02x", b)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } public static void main(String[] args) { String password = "example"; String salt = "somesalt"; String encryptedPassword = encryptPassword(password, salt); System.out.println("Encrypted password: " + encryptedPassword); } } ``` 在上述代码中,我们首先将密码和盐值拼接在一起,然后使用MessageDigest类提供的`digest()`方法进行加密加密后的字节数组将被转换成十六进制字符串,并以字符串形式返回。在main方法中,我们将输入的密码和盐值传递给`encryptPassword`方法,并打印加密后的密码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值