首页 > 编程语言 >java安全架构____java MD5加密

java安全架构____java MD5加密

时间:2023-09-13 15:34:52浏览次数:43  
标签:messageDigest java String temp bytes ____ md5Str throws MD5


package com.security.md5;

import java.security.MessageDigest;

/**
 * @author md5
 * 
 */
public class Md5 {
	public static void main(String[] args) throws Exception {
		System.out.println("简单md5加密____:"+md5Encode("123456"));
		//避免不同的人有相同的密文不安全
		System.out.println("带key映射的md5加密___:"+md5KeyEncode("zhangsan","123456"));
	}
	/**
	 * 简单加密
	 * @param generalStr 明文
	 * @return 密文
	 * @throws Exception
	 */
	public static String md5Encode(String generalStr) throws Exception {
		MessageDigest messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.update(generalStr.getBytes());
		// 根据明文的字节数组构造 加密后的字符串 可以增加位移算法 独立的key等
		byte[] bytes = messageDigest.digest();
		String md5Str = "";
		for (int i = 0; i < bytes.length; i++) {
			// System.out.println("每个字节数组数值:"+(char)bytes[i]);
			// 判断每个字节的数值 小于0的会出现负数 不要
			int temp = 0;
			if (bytes[i] < 0) {
				temp = 256 + bytes[i];
			} else {
				temp = bytes[i];
			}
			// 当位数不够补位
			if (temp < 16) {
				md5Str = md5Str + "0";
			}
			md5Str = md5Str + Integer.toString(temp, 16);
		}
		return md5Str;
	}
	/**
	 * 用户名映射
	 * @param userName 映射key
	 * @param userPwd 明文
	 * @return 密文
	 * @throws Exception
	 */
	public static String md5KeyEncode(String userName, String userPwd) throws Exception {
		String code = userName + userPwd;
		MessageDigest messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.update(code.getBytes("UTF-8"));
		byte[] bytes = messageDigest.digest();
		String md5Str = "";
		for (int i = 0; i < bytes.length; i++) {
			int temp = 0;
			// 当bytes<0
			if (bytes[i] < 0) {
				temp = 256 + bytes[i];
			} else {
				temp = bytes[i];
			}
			// 当位数不够16位时
			if (temp < 16) {
				md5Str = md5Str + "0";
			}
			md5Str = md5Str + Integer.toString(temp, 16);
		}
		return md5Str;
	}

}

//运行结果

java安全架构____java MD5加密_javaMD5加密

//网上对比结果

java安全架构____java MD5加密_java_02



标签:messageDigest,java,String,temp,bytes,____,md5Str,throws,MD5
From: https://blog.51cto.com/ratelcloud/7455548

相关文章

  • dubbo分布式项目开发____配置经验和心得
    //1.zookeeper配置文件中不要出现中文会报错 //2.分布式开发对象一定要序列化//摘抄如下在面向对象程序语言中做分布式计算的时候,经常需要将对象在不同的主机之间传输,我这次在实现分布式计算的时候,需要将一个计算对象从中央服务器Server分发给所有的客户端client。通过......
  • Flask基础入门到精通之flask准备和路由
    一、前言Flask诞生于2010年,是Arminronacher(阿明·罗纳彻)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如......
  • dubbo分布式项目开发____dubbo控制台管理
    //1.将dubbo-admin放到tomcat下自行解压修改dubbo.properties文件结构如下为了避免冲突如用到多个tomcat时修改端口号即可8080  其他8081...2..3..4等//从命名下war包的名称不带版本号放到tomcat下解压出来的就不带版本号了//启动tomcat访问这个项目我个人用的是8081单独......
  • 《VUE》走马灯组件
    <template><!--走马灯--><divclass="box"><divclass="carousel"><divclass="item"v-for="(v,i)inlist":key="i"@click="open(v)"><img:sr......
  • dubbo分布式项目开发____dubbo服务调用开发
    //创建工程名 cnse-customer-user导入jar包 //工程结构//spring文件配置<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ......
  • git 回撤操作
    背景:同一个分支上,比如做了10个功能,有10次提交记录,但是产品突然说后面的五个功能不要了解决方案:git的revert命令。gitrevert命令的含义gitrevertcommitId1.表示撤销某个提交,并不是说撤销至某个提交。举个例子:新增1.txt文件进行第一次提交,新增2.txt文件进行第二次提交;此时......
  • dubbo分布式项目开发____dubbo服务接口开发
    //1.创建服务提供者工程名 cnse-provider-user //2.导入jar包和创建工程包名//配置spring的xml文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i......
  • C# 实现二维码
    https://blog.csdn.net/qq_43562262/article/details/105988725查了下资料,约有两种方法,一种是引用新的dll,另一种是安装nuget中的QRcoder,在此记录下别人整理的资源。必须的引入的类库usingSystem;usingSystem.Drawing;usingSystem.Text;usingThoughtWorks.QRCode.Codec;//......
  • dubbo分布式项目开发____Zookeeper搭建步骤和配置思路
    //搭建zookeeper 1.可以放到在linux下可以在windows下解压到指定的目录如个人:F:\zookeeper2.复制下conf下复制下zoo_simple.cfg文件把复制的修改成zoo.cfg内容如下一定以不要出现中文会报错的3.修改完成后进入windowsdos命令回车一下内容说明注册中心配置正常//资源地址......
  • 2023.9.13 greedy and DS
    CF1439C考虑修改操作,由于序列是单调的,所以只需要线段树二分出修改的区间即可。考虑查询,一定是若干个连续段,设一开始是\(y\),这个连续段结束后,\(y\)至少减去一半,所以连续段个数是\(\log\)级别。在线段树上遍历即可。......