package com.wh.md5;

import java.security.MessageDigest;
import java.util.Arrays; /**
* @author 王恒
* @datetime 2017年7月5日 下午3:40:58
* @description
* MD5加密源码
* 核心是21行到26行及36、37行(好吧,位运算在这里真的挺有用)
* @see 常用于对登录密码进行加密,能保证,即使数据库被侵占了,对方也拿不到明文密码
*/
public class MyMd5 { public final static String md5(String s){
//以16进制进行转换
char[] hexDigits={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
try{
//将字符创变为字节数组
byte[] strTemp = s.getBytes();
//创建MessageDigest对象
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
//使用strTemp字节数组更新mdTemp摘要
mdTemp.update(strTemp);
//通过填充之类的相关操作完成哈希计算
byte[] digest = mdTemp.digest();
System.out.println("byte[] digest: "+Arrays.toString(digest));
// 得到哈希算法之后的长度
int j=digest.length;
//System.out.println("digest.length: "+j);
//创建一个新的字符数组,长度为digest的两倍,用于创建新的字符创
char[] newChar=new char[2*j];
int k=0;
for(int i=0;i<j;i++){
byte b=digest[i];
newChar[k++]=hexDigits[b>>>4&0xf];//奇数位的位运算
newChar[k++]=hexDigits[b&0xf];//偶数位的位运算
}
//返回一个新的字符串
return new String(newChar);
}catch(Exception e){
return null;
}
} public static void main(String[] args) {
String md5 = MyMd5.md5("b");
System.out.println("md5: "+md5);
//第1次输出值 md5: 92eb5ffee6ae2fec3ad71c777531578f
//第2次输出值 md5: 92eb5ffee6ae2fec3ad71c777531578f
//从这里看出 值不是随意生成的,给定更新数据,则每次生成的值都一样
} }

  

自己写的MD5加密原码的更多相关文章

  1. MD5加密源码!

    import java.security.*; class MD5{ public final static String MD5(String s){ char hexDigits[] = {'0' ...

  2. linux md5 加密字符串和文件方法

    linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...

  3. Linux下使用MD5加密BASE64加密

    这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...

  4. MD5加密学习

    MD5(Message Digest --消息摘要算法)算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错),任何长度的任意内容都可以用MD5计算出散列值.主要作用是[验明“ ...

  5. wemall app商城源码android开发MD5加密工具类

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

  6. ASP原码加密工具介绍

    ASP原码加密工具介绍 总是会有非常多方法暴露ASP的原程序.造成数据库的password 路径都能够轻易被其它人搞到,所以对ASP程序实行加密处理是个不错的解决方法.以下来介绍一个工具假设大家感兴趣 ...

  7. java加密算法--MD5加密和哈希散列带秘钥加密算法源码

    package com.ompa.common.utils; import java.security.MessageDigest; import java.security.NoSuchAlgori ...

  8. jmeter用beanshell调用自己写的jar进行MD5加密

    1.先在eclipse里面写好MD5的加密文件,用eclipse执行一遍,确保文件不会报错 Str2MD5.java 内容如下: package hehe.md5; import java.secur ...

  9. Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密

    [前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...

随机推荐

  1. JSP与HTML的差别

    HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性 语言呢?由于.仅仅要你有一个浏览器那么它就能够正常显示 ...

  2. WPF绑定各种数据源之object数据源

    一.WPF绑定各种数据源索引 WPF 绑定各种数据源之Datatable WPF绑定各种数据源之object数据源 WPF绑定各种数据源之xml数据源 WPF绑定各种数据源之元素控件属性 Bindin ...

  3. sanic官方文档解析之静态文件和版本

    1,静态文件 就向图片文件一样,静态文件和指导性的文件,当通过Sanic服务端用app.static()方法注册的时候,这种方法采用端点url和文件名称获得.这样的文件的指定,将会通过指定的端点访问. ...

  4. 微信小程序存放视频文件到阿里云用到算法js脚本文件

           peterhuang007/weixinFileToaliyun: 微信小程序存放视频文件到阿里云用到算法js脚本文件 https://github.com/peterhuang007/ ...

  5. leetCode 116.Populating Next Right Pointers in Each Node (为节点填充右指针) 解题思路和方法

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  6. SQL JOIN连接分类[转]

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符):包括相等联接和自然联接: 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行:    2.外联接.外联接可以 ...

  7. 学习html5 中的canvas(一)

    1.canvas画直线 <!doctype html> <html> <head> <meta charset="UTF-8"> & ...

  8. eclipse软件启动弹窗端口问题解决

    如果启动eclipse,弹出一个窗口,上面显示,8080 .8009.……等的提示,说明端口有冲突, 解决办法如下: 1.打开cmd 2.输入 netstat   -ano|findstr  8080 ...

  9. fuse的mount机制-流程及参数

    在bbfs中,传递的参数有两个目录,fuse将一个目录挂载在另一个目录下. 在ssfs中,传递的参数只有一个目录(传递两个目录fuse会出错). 问题:那么fuse的mount机制到底需要几个目录参数 ...

  10. jquery实现无限滚动瀑布流实现原理

    现在类似于pinterest这类的表现效果很火,其实我比较中意的是他的布局效果,而不是那种瀑布流. 虽然我不是特别喜欢这种瀑布流的表现样式,但是还是写了几篇关于无限滚动瀑布流效果的文章,Infinit ...