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加密解密算法相关推荐

  1. 异或(XOR)运算加密/解密算法

    本文将介绍一个简单易用的加密/解密算法:使用异或(XOR)运算.本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象. XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量 ...

  2. 简单的加密/解密算法_/c++

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36557960/article/details/79299093 关于加密和解密问题,有的加密 ...

  3. 异或加密的java算法_Java使用异或运算实现简单的加密解密算法实例代码

    Java简单的加密解密算法,使用异或运算 实例1: package cn.std.util; import java.nio.charset.Charset; public class DeEnCod ...

  4. Java简单实现DES加密解密算法

    Java简单实现DES加密解密算法 文章目录 Java简单实现DES加密解密算法 DES算法介绍 实现相关java类 代码实现 DES算法介绍 DEC加密算法属于对称加密,即利用指定的密钥,按照密码的 ...

  5. C++凯撒密码加密解密算法

    一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...

  6. C++实现古典密码-凯撒密码加密解密算法

    文章目录 第一部分 Caesar密码简介 1.1 基本思想 1.2 历史沿革 第二部分 Caesar密码的C++实现 第一部分 Caesar密码简介 1.1 基本思想 在密码学中,恺撒密码(英语:Ca ...

  7. RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...

  8. 基于新唐M0的XXTEA加密解密算法源码

    源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...

  9. java 加密_Java版SMS4加密解密算法

    特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 前言 最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现. ...

  10. 国密SM9算法C++实现之七:加密解密算法

    SM9算法C++实现系列目录: 基于JPBC的SM9算法的java实现与测试 国密SM9算法C++实现之0:源码下载地址 国密SM9算法C++实现之一:算法简介 国密SM9算法C++实现之二:测试工具 ...

最新文章

  1. html 移动端(手机)调试 vconsole
  2. oracle 用mybatis生成主键
  3. 文件和目录之stat、fstat和lstat函数
  4. 《几何与代数导引》例2.6
  5. leetcode44. 通配符匹配 又是一道没有解释的字符串dp困难题
  6. 对51CTO的初步看法
  7. Java动态代理全面分析
  8. NRF24L01使用外部中断读取数据的问题
  9. 填词游戏java_第八届蓝桥杯国赛 Java B组 第五题 填字母游戏(博弈论)
  10. Android中JNI 的一些常用说明 JNI_OnLoad registerNatives registerNativeMethods
  11. 持续集成:软件质量改进和风险降低之道
  12. Kubesploit:针对容器化环境的跨平台后渗透利用工具
  13. java简历模板 知乎,简历模板太多不知选哪种?让面试官眼前一亮的简历!
  14. python做项目看板_基于pyecharts搭建BI看板
  15. 织梦cms仿站_文章发布出现WTS-WAF页面
  16. PHP正则表达式基础必须掌握
  17. python xlrd使用_在Python中使用xlrd以文本形式读取数值Excel数据
  18. 剪枝计算机,α-β剪枝 - 电脑黑白棋 - 黑白棋天地
  19. 利用网线在两台电脑之间传输文件
  20. 四大技术峰会30+顶级讲师公布,CCTC 2017盛装启航

热门文章

  1. 在线检查错别字校对软件 | 推荐
  2. 萤火虫算法matlab实现,萤火虫算法,matlab代码.doc
  3. 最新消息,我的Zcash钱包收到鱼池的ZEC打款了
  4. JSP-session编写购物车
  5. Java读取配置文件yml中属性的方法
  6. python智慧树视频爬取_python爬虫利器之requests库的用法(超全面的爬取网页案例)...
  7. CCS10.2安装步骤
  8. java keytool 下载_常用的Java Keytool Keystore命令
  9. chartControl
  10. 111端口rpcbind漏洞