首页 » SEO优化 » phpmd5salt技巧_java常用加解密算法Md5salt及具体运用

phpmd5salt技巧_java常用加解密算法Md5salt及具体运用

duote123 2024-10-26 0

扫一扫用手机浏览

文章目录 [+]

一、Base64和UrlBase64

二、Md5 + salt

phpmd5salt技巧_java常用加解密算法Md5salt及具体运用

二、对称加密

phpmd5salt技巧_java常用加解密算法Md5salt及具体运用
(图片来自网络侵删)

四、非对称加密

这节整理 MD5、MD5+salt基本先容、利用场景及特点,以及java实现机制(文末附代码,须要的自取哈)

二、Md5 + salt

Md5加密 (在线加解密网址 https://www.cmd5.com/)

定义:

(英语:MD5 Message-Digest Algorithm),一种被广泛利用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用以供应的完全性保护。

特点:

加密不可逆,即无法通过密文得到原文。

不变性,即相同的原文,通过MD5算法得到的密文总是相同的。

散列性,即对原文作轻微的改动,都可导致终极的密文完备改变。

利用场景:

普通密码管理:

用户明文进行加密后存储DB,登录时比对是否同等(因其已被破解,一样平常 密码+salt 进行MD5加密存储来提高安全性);

数字署名:

比如对文件中内容MD5加密,如果该文件被修改,只要重新打算Md5并比对前后的md5值,防止改动内容的“抵赖”,即数字署名的浸染。

同等性验证:

MD5通过其不可逆的字符串变换算法,产生唯一的MD5信息择要。

Md5加密 + salt

salt便是一个 随机的字符串

利用办法:

1. 数据库user表中设置一个slat列,每一次注册用户时,天生一个独一无二的slat(盐)写入数据库slat列,比如手机号作为登任命户ID。

2. 利用md5+slat的办法进行密码加密,写入数据库password列。

3. 登任命户时,先根据userid(手机号)得到slat,输入密码和md5+slat加密之后得到的password和数据库password比拟,相同,则登入成功。

java实现过程

引入pom

<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version></dependency>

java实现Md5加密,Md5+salt加密

package com.pica.cloud.account.account.server.util;import org.apache.commons.codec.digest.DigestUtils;import java.io.FileInputStream;import java.io.IOException;import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.util.Random;import static com.alibaba.fastjson.support.spring.FastJsonJsonView.UTF8;public class Md5Util { private static final String UTF8 = StandardCharsets.UTF_8.name(); / 根据长度n 获取唯一salt值 @param n @return / public static String createSlat(int n) { if (n == 0) return ""; char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < n; i++) { char aChar = chars[new Random().nextInt(chars.length)]; sb.append(aChar); } return sb.toString(); } / 获取MD5+salt 密文 @param str password明文 @param length salt长度 @return / public static String getMD5CodeBySalt(String str, int length) { String saltStr = str.concat(createSlat(length)); System.out.println("add salt值后的明文:" + saltStr); return getMD5Code(saltStr); } / 获取MD5 密文 @param str password明文 @return / public static String getMD5Code(String str) { String s = ""; try { // 对str进行Md5加密 s = DigestUtils.md5Hex(str.getBytes(UTF8)); } catch (Exception e) { e.printStackTrace(); } return s; } public static void main(String[] args) { System.out.println("不带salt值的MD5加密:明文123456a,秘文:" + Md5Util.getMD5Code("123456a")); System.out.println("带salt值的MD5加密:秘文:" + Md5Util.getMD5CodeBySalt("123456a", 2)); }}

实行效果:

标签:

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读0 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读0 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0