方法一:只加密

import java.security.*;

import java.security.spec.*;

class MD5_test {

public final static String MD5(String s) {

char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

'a', 'b', 'c', 'd', 'e', 'f' };

try {

byte[] strTemp = s.getBytes();

MessageDigest mdTemp = MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);

byte[] md = mdTemp.digest();

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

public static void main(String[] args) {

// MD5_Test aa = new MD5_Test();

System.out.print(MD5_test.MD5("b"));

}

}

方法二:加密与解密

import java.security.MessageDigest;

public class MD5andKL {

// MD5加码。32位

public static String MD5(String inStr) {

MessageDigest md5 = null;

try {

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 KL(String inStr) {

// String s = new 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 String JM(String inStr) {

char[] a = inStr.toCharArray();

for (int i = 0; i < a.length; i++) {

a[i] = (char) (a[i] ^ 't');

}

String k = new String(a);

return k;

}

// 测试主函数

public static void main(String args[]) {

String s = new String("a");

System.out.println("原始:" + s);

System.out.println("MD5后:" + MD5(s));

System.out.println("MD5后再加密:" + KL(MD5(s)));

System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));

}

}

参考自:http://happymen001.javaeye.com/blog/576388

java中md5加密和解密_java的MD5加密与解密相关推荐

  1. java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法

    java实现md5加密解密 notNET中加密和解密的实现方法 亦或是旅途风光 7-14 1918℃ 22 [ ee21.cn - ASP.NET ] .NET将原来独立的API和SDK合并到一个框架 ...

  2. java md5 16位解密_Java实现MD5(32/16位)大小写加密

    MD5简单介绍 大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法:与之类似,MD5就可以为任何文件(不管其大小.格式.数量)产生一个同样独一无二的&quo ...

  3. java中e的几次方_java怎么算e的几次方

    java怎么算e的几次方 [2021-02-06 06:39:03]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  4. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  5. java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试

    Java技巧:用匿名类来实现简化程序调试 在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle).但其实,它们对于debug也很有帮助.本文将 ...

  6. java中用于选择按钮的语句_java程序员考试套题1

    Java练习一 一.选择题 1.在Java中,下列()方法可以把JFrame对象jFrame的布局管理器设为FlowLayout 类型. A.jFrame.setLayout(new FlowLayo ...

  7. java中集合的模型特点_Java 学习笔记(十四)集合

    集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...

  8. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

  9. JAVA中console方法怎么用_Java中Console对象实例代码

    Java中Console对象实例代码 发布于 2020-12-20| 复制链接 摘记: 在JDK 6中新增了java.io.Console类,可以让您取得字节为基础的主控台装置,例如,您可以藉由Sys ...

  10. Java中非法参数的异常_Java中的异常

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

最新文章

  1. Spring Boot与消息
  2. spark比java快吗_为什么我的Spark DataFrame比RDD慢得多?
  3. linux用yum安装svn,linux下 yum安装svn
  4. leetcode1094. 拼车
  5. [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
  6. 【Mybatis笔记】mybatis实现mysql增删改查
  7. 推荐参加国际会议海报制作(poster)的Latex模板
  8. excel如何使用计算机,计算机excel试题和答案
  9. (源代码)用Python制作疫情的实时数据地图(PS:全国以及每个省)
  10. opencv之cvtColor()函数
  11. 云原生虚拟网络之 VXLAN 协议
  12. 2020叉车司机考试及叉车司机模拟考试题库
  13. 深度学习之目标检测--Pytorch实战
  14. 多少卡路里,我应该吃是错误的
  15. 什么是值传递,什么是引用传递
  16. 飞凌imx6dl lvds闪屏问题记录
  17. 6G新天线技术白皮书(附下载)
  18. 魔百盒CM211-1增强版2+16卡刷固件及教程
  19. 2017广东高考作文题出炉:选择两三个关键词
  20. 如何高效做文献回顾?(工具篇)

热门文章

  1. bitvise SSH 打开代码中文显示乱码的问题
  2. andriod安装linux系统
  3. Android截屏的实现方式
  4. Vrep学习笔记(一)
  5. java获取字典表数据,利用注解完成字典表数据对应
  6. QTreeView的使用(四)
  7. 学习记录:小程序图片上传至服务器
  8. VMware虚拟机12个使用技巧
  9. php实现分时线图,分时图均价线公式?看懂了便可掌握股票的买卖点
  10. pip卸载旧版本后安装新版本(我是Python3)