最简单详细的JavaMD5加密解密算法
JavaMD5加密算法
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 中被加以规范。
将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。
1996年后被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
算法
Figure 1. 一个MD5运算— 由类似的64次循环构成,分成4组16次。F 一个非线性函数;一个函数运算一次。Mi 表示一个 32-bits 的输入数据,Ki 表示一个 32-bits 常数,用来完成每次不同的计算。
MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。
MD5加密解密类[开袋即食]
package com.Test; import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /** * 采用MD5加密解密 * @author tfq * @datetime 2011-10-13 */
public class MD5Util { /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr){ MessageDigest md5 = null; try{//引用 java.security.MessageDigest公共类// getInstance("MD5")方法 设置加密格式md5 = MessageDigest.getInstance("MD5"); //此句是核心}catch (Exception e){ System.out.println(e.toString()); e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++){ int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } /** * 加密解密算法[可逆] 执行一次加密,执行两次解密 */ public static String convertMD5(String inStr){ char[] a = inStr.toCharArray(); for (int i = 0; i < a.length; i++){ a[i] = (char) (a[i] ^ 't'); } String s = new String(a); return s; } // 测试主函数 public static void main(String args[]) { String s = new String("tangfuqiang"); System.out.println("原始:" + s); System.out.println("MD5后:" + string2MD5(s)); System.out.println("加密的:" + convertMD5(s)); System.out.println("解密的:" + convertMD5(convertMD5(s))); }
}
ヽ( ̄▽ ̄)ノ开箱即食
最简单详细的JavaMD5加密解密算法相关推荐
- 异或(XOR)运算加密/解密算法
本文将介绍一个简单易用的加密/解密算法:使用异或(XOR)运算.本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象. XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量 ...
- 简单的加密/解密算法_/c++
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36557960/article/details/79299093 关于加密和解密问题,有的加密 ...
- 异或加密的java算法_Java使用异或运算实现简单的加密解密算法实例代码
Java简单的加密解密算法,使用异或运算 实例1: package cn.std.util; import java.nio.charset.Charset; public class DeEnCod ...
- Java简单实现DES加密解密算法
Java简单实现DES加密解密算法 文章目录 Java简单实现DES加密解密算法 DES算法介绍 实现相关java类 代码实现 DES算法介绍 DEC加密算法属于对称加密,即利用指定的密钥,按照密码的 ...
- C++凯撒密码加密解密算法
一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...
- C++实现古典密码-凯撒密码加密解密算法
文章目录 第一部分 Caesar密码简介 1.1 基本思想 1.2 历史沿革 第二部分 Caesar密码的C++实现 第一部分 Caesar密码简介 1.1 基本思想 在密码学中,恺撒密码(英语:Ca ...
- RSA、MD5加密解密算法全套解析安装教程
第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...
- 基于新唐M0的XXTEA加密解密算法源码
源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...
- java 加密_Java版SMS4加密解密算法
特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 前言 最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现. ...
- 国密SM9算法C++实现之七:加密解密算法
SM9算法C++实现系列目录: 基于JPBC的SM9算法的java实现与测试 国密SM9算法C++实现之0:源码下载地址 国密SM9算法C++实现之一:算法简介 国密SM9算法C++实现之二:测试工具 ...
最新文章
- html 移动端(手机)调试 vconsole
- oracle 用mybatis生成主键
- 文件和目录之stat、fstat和lstat函数
- 《几何与代数导引》例2.6
- leetcode44. 通配符匹配 又是一道没有解释的字符串dp困难题
- 对51CTO的初步看法
- Java动态代理全面分析
- NRF24L01使用外部中断读取数据的问题
- 填词游戏java_第八届蓝桥杯国赛 Java B组 第五题 填字母游戏(博弈论)
- Android中JNI 的一些常用说明 JNI_OnLoad registerNatives registerNativeMethods
- 持续集成:软件质量改进和风险降低之道
- Kubesploit:针对容器化环境的跨平台后渗透利用工具
- java简历模板 知乎,简历模板太多不知选哪种?让面试官眼前一亮的简历!
- python做项目看板_基于pyecharts搭建BI看板
- 织梦cms仿站_文章发布出现WTS-WAF页面
- PHP正则表达式基础必须掌握
- python xlrd使用_在Python中使用xlrd以文本形式读取数值Excel数据
- 剪枝计算机,α-β剪枝 - 电脑黑白棋 - 黑白棋天地
- 利用网线在两台电脑之间传输文件
- 四大技术峰会30+顶级讲师公布,CCTC 2017盛装启航
热门文章
- 在线检查错别字校对软件 | 推荐
- 萤火虫算法matlab实现,萤火虫算法,matlab代码.doc
- 最新消息,我的Zcash钱包收到鱼池的ZEC打款了
- JSP-session编写购物车
- Java读取配置文件yml中属性的方法
- python智慧树视频爬取_python爬虫利器之requests库的用法(超全面的爬取网页案例)...
- CCS10.2安装步骤
- java keytool 下载_常用的Java Keytool Keystore命令
- chartControl
- 111端口rpcbind漏洞