md5如何实现encodePassword加密方法
后台的加密代码:用户名:zhangsan 密码:123
/**
* 编译密码,即加密
* @param user 用户信息
* @param password 密码
* @return 返回值为加密加盐值后的密码(密码,用户名)
*/
private String encodePassword(VtUser user, String password) {
Md5PasswordEncoder md5 = new Md5PasswordEncoder();
//用户名是盐值,最后生成盐值md5
return md5.encodePassword(password, user.getUserName());
}
测试用例:
userName: zhangsan
password: 123
加密后password: b2316c0d1ff0550298121a537ab93f21
先看下MessageDigestPasswordEncoder.java加密函数, 用户名是盐值, 最终生成盐值MD5:
public String encodePassword(String rawPass, Object salt) {
String saltedPass = mergePasswordAndSalt(rawPass, salt, false); //字符串拼接成rawPass{salt}格式
MessageDigest messageDigest = getMessageDigest(); //就是MessageDigest.getInstance
byte[] digest = messageDigest.digest(Utf8.encode(saltedPass)); //转换成utf-8格式字节流
// "stretch" the encoded value if configured to do so
for (int i = 1; i < iterations; i++) {
digest = messageDigest.digest(digest); //iterations的初值是1, 所以不会进来
}
if (getEncodeHashAsBase64()) { //该函数默认返回false
return Utf8.decode(Base64.encode(digest));
} else {
return new String(Hex.encode(digest)); //最终执行这一行
}
}
md5如何实现encodePassword加密方法的更多相关文章
- MD5的32位加密方法
/// <summary> /// MD532位加密方式 /// </summary> /// <param name="str">用户原始密码 ...
- iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)
普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...
- .net系统的MD5加密方法
/// <summary>/// .net系统的MD5加密方法/// </summary>/// <param name="strIN">< ...
- python文件的md5加密方法
本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- MD5 32位 小写加密和大写加密
/** * MD5加密方法 */ public static String MD5(String str) { MessageDigest md5 = null; try { md5 = Messag ...
- iOS里常见的几种信息编码、加密方法简单总结
一.MD5 MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的 ...
- C#:使用MD5对用户密码加密与解密
C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...
- Java中常用的加密方法(JDK)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
随机推荐
- Asp.Net IHttpHandler介绍
ASP.NET响应Http请求时常用的两个处理接口是IHttpHandler和IHttpModule. 一般的,IHttpHandler用来处理一类特定的请求,比如对每个*.asp, *.aspx文件 ...
- 【CodeForces 574B】Bear and Three Musketeers
[链接] 我是链接,点我呀:) [题意] [题解] 枚举每一条边(x,y) 然后再枚举y的出度z 看看g[x][z]是否等于1(表示联通) 如果等于1就说明找到了一个三元环,则尝试用它们的出度和-6更 ...
- spring 组件注册
一.声明配置类和注册 bean /** * 配置类 == applicationContext.xml 配置文件 * @author Administrator * */ //@Configurati ...
- MYSQL数据的安装、配置
linux安装mysql服务分两种安装方法: 1.源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错. 2.使用官方编译好的二进制文件安装,优点是安装 ...
- 如何利用eclipse实现批量修改文件的编码方式
在eclipse+Eclipse环境下,打开一个jsp文件,经常发现汉字无法显示,右键点击查看这个文件属性,发现文件的字符编码属性为ISO-8859-1. 目前的解决方法有:1. 手工把 ...
- C#中的string驻留池
刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例.如下: String s1 = "He ...
- Apach配置本地域名
分三步: 一,开启虚拟域名设置,在路径中找到(apache\apache2.4.9\conf)httpd.conf 配置文件, 去掉 " Include conf/extra/httpd-v ...
- xcode对照两个分支中同一个文件
对于同一个项目的两个分支,由于两个分支可能各自都做了一些改动.所以通过Source Control中的History...功能是无法查看的.例如以下图: 这个时候.我们须要用到xcode的另外一个功能 ...
- 使用GitHub来托管Larval框架
每个新框架都有自己的安装方法laravel 的安装方法有一下几种: (一) 通过下载 Laravel 包安装 (1) 安装Composer (2) 下载最新Larvel框架 https://g ...
- 广东工业大学2016校赛决赛-网络赛 1169 Problem A: Krito的讨伐 优先队列
Problem A: Krito的讨伐 Description Krito终于干掉了99层的boss,来到了第100层.第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点 ...