版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

用于MD5加密,主要场景是在调用登录接口时对密码进行MD5加密处理。

效果图

暂不需要

代码分析

基于Java.security.MessageDigest这个包;

实现思路:

  1. 生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等;
  2. 生成要加密的字符串的字节类型数组数组;
  3. 计算消息摘要,返回字节类型的数组;
  4. 将计算结果(byte数组)转换为字符串。

使用步骤

一、项目组织结构图

注意事项:

1、导入类文件后需要change包名以及重新import R文件路径

2、Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖

二、导入步骤

将WebUtil文件复制到项目中

  1. package com.why.project.webutilsdemo.utils;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.security.MessageDigest;
  5.  
  6. /**
  7. * Created HaiyuKing
  8. * Used MD5加密(基于MessageDigest)
  9. */
  10. public class WebUtils {
  11.  
  12. /**
  13. * MD5加密,32位
  14. * param str - 加密前的字符串
  15. * http://hubingforever.blog.163.com/blog/static/171040579201210781650340/
  16. * <br/>1、生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
  17. * <br/>2、生成要加密的字符串的字节类型数组数组
  18. * <br/>3、计算消息摘要,返回字节类型的数组
  19. * <br/>4、将计算结果(byte数组)转换为字符串
  20. * str - password
  21. * return 5f4dcc3b5aa765d61d8327deb882cf99
  22. * */
  23. public static String MD5(String str)
  24. {
  25. MessageDigest md5 = null;
  26. try
  27. {//生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
  28. md5 = MessageDigest.getInstance("MD5");
  29. } catch (Exception e)
  30. {
  31. e.printStackTrace();
  32. return "";
  33. }
  34.  
  35. //生成要加密的字符串的字节类型数组数组
  36. char[] charArray = str.toCharArray();
  37. byte[] byteArray = new byte[charArray.length];
  38. for (int i = 0; i < charArray.length; i++)
  39. {
  40. byteArray[i] = (byte) charArray[i];
  41. }
  42.  
  43. //计算消息摘要,返回字节类型的数组
  44. byte[] md5Bytes = md5.digest(byteArray);
  45.  
  46. //将计算结果(byte数组)转换为字符串
  47. StringBuffer hexValue = new StringBuffer();
  48. for (int i = 0; i < md5Bytes.length; i++)
  49. {
  50. int val = (md5Bytes[i]) & 0xff;
  51. if (val < 16)
  52. {
  53. hexValue.append("0");
  54. }
  55. hexValue.append(Integer.toHexString(val));
  56. }
  57. return hexValue.toString();
  58. }
  59.  
  60. /**
  61. * 返回的结果跟上一个方法一致
  62. * */
  63. public static String MD5_2(String str)
  64. {
  65. MessageDigest md5 = null;
  66. try
  67. {//生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
  68. md5 = MessageDigest.getInstance("MD5");
  69. } catch (Exception e)
  70. {
  71. e.printStackTrace();
  72. return "";
  73. }
  74.  
  75. //生成要加密的字符串的字节类型数组数组
  76. byte[] byteArray1 = null;
  77. try {
  78. byteArray1 = str.getBytes("UTF-8");
  79. } catch (UnsupportedEncodingException e) {
  80. // TODO Auto-generated catch block
  81. e.printStackTrace();
  82. }
  83. md5.update(byteArray1);
  84. //计算消息摘要,返回字节类型的数组
  85. byte[] md5Bytes = md5.digest();
  86.  
  87. //将计算结果(byte数组)转换为字符串
  88. StringBuffer hexValue = new StringBuffer();
  89. for (int i = 0; i < md5Bytes.length; i++)
  90. {
  91. int val = (md5Bytes[i]) & 0xff;
  92. if (val < 16)
  93. {
  94. hexValue.append("0");
  95. }
  96. hexValue.append(Integer.toHexString(val));
  97. }
  98. return hexValue.toString();
  99. }
  100.  
  101. }

注意:MD5和MD5_2两个方法返回的结果相同,使用其中一个即可。

三、使用方法

  1. package com.why.project.webutilsdemo;
  2.  
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6.  
  7. import com.why.project.webutilsdemo.utils.WebUtils;
  8.  
  9. public class MainActivity extends AppCompatActivity {
  10.  
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15.  
  16. String md5= WebUtils.MD5("password");
  17. Log.w("MainActivity","md5="+md5);
  18. }
  19. }

打印日志如下:

混淆配置

参考资料

MessageDigest简介

http://hubingforever.blog.163.com/blog/static/171040579201210781650340/

项目demo下载地址

https://github.com/haiyuKing/WebUtilsDemo

WebUtils【MD5加密(基于MessageDigest)】的更多相关文章

  1. [android] 手机卫士保存密码时进行md5加密

    一般的手机没有root权限,进不去data/data目录,当手机刷机了后,拥有root权限,就可以进入data/data目录,查看我们保存的密码文件,因此我们需要对存入的密码进行MD5加密 获取Mes ...

  2. MD5加密和sha加密

    sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文 ...

  3. Java实现MD5加密及解密的代码实例分享

    链接:http://www.jb51.net/article/86027.htm Java实现MD5加密及解密的代码实例分享 作者:厦门大学陈黎栋 字体:[增加 减小] 类型:转载 时间:2016-0 ...

  4. 利用Java自带的MD5加密java.security.MessageDigest;

    MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著 ...

  5. Java 自带的加密类MessageDigest类(加密MD5和SHA)

    Java 自带的加密类MessageDigest类(加密MD5和SHA) - X-rapido的专栏 - CSDN博客 https://blog.csdn.net/xiaokui_wingfly/ar ...

  6. MessageDigest简介(与MD5加密有关)

    参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html 参考来源:http://blog.csdn.net/hudashi/article/ ...

  7. JAVA MessageDigest(MD5加密等)

    转自http://blog.csdn.net/hudashi/article/details/8394158 一.概述 java.security.MessageDigest类用于为应用程序提供信息摘 ...

  8. MD5加密字符串--基于python

    import hashlib#md5加密32位def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdige ...

  9. MD5加密的Java实现

    在各种应用系统中,如果需要设置账户,那么就会涉及到储存用户账户信息的问题,为了保证所储存账户信息的安全,通常会采用MD5加密的方式来,进行储存.首先,简单得介绍一下,什么是MD5加密. MD5的全称是 ...

随机推荐

  1. Python cmp() 函数

    描述 cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1. 语法 以下是 cmp() 方法的语法:cmp( ...

  2. Java 读书笔记 (十二) Java Character 类

    在实际开发过程中, 我们经常会遇到需要使用对象,而不是内置数据类型的情况. 为了解决这个问题, Java语言为内置数据类型char提供了包装类Character类. 可以使用Character的构造方 ...

  3. MVC项目中怎么浏览html页面

    public class HomeController : Controller { public ActionResult Index() { //return View(); //return R ...

  4. MVC之图片验证码

    MVC之图片验证码 controller中的action方法public ActionResult GetValidateCode() { ValidateCode vCode = new Valid ...

  5. 【BZOJ 2713】[Violet 2]愚蠢的副官&&【BZOJ1183】[Croatian2008]Umnozak——【数位DP】

    题目链接: 2713传送门 1183传送! 题解: 由于看不懂英文题解(十个单词十一个不认识……),所以只能自己想QAQ. 其实乱搞就好= =. 首先我们发现,各位数字乘积要在1e9以下才可能有用,这 ...

  6. python九九

    学了有一段时间了,才发现自己连九九乘法表都写不出,好好笑,哈哈. 代码实现: for i in range(1,10): for j in range(1,i+1): print('%dx%d=%-2 ...

  7. myeclipse maven tomcat插件 创建web工程

    自从有了云笔记,很久不写博客了.今天写了使用Freemarker静态化JSP页面,索性就发出来.初学,勿喷. 这篇文字以前放在云笔记里,当然里面有很多借鉴网络上的东西,而自己也使用Maven很久了,索 ...

  8. Windows上安装配置SSH教程(7)——几种方式对比

    服务端:Windows XP 客户端:Windows 10 由于Cygwin也可以安装OpenSSH,所以客户端其实可以直接使用Cygwin安装OpenSSH,那么在Windows下使用SCP(安全拷 ...

  9. python——在文件存放路径下自动创建文件夹!

    1.a.py文件存放的路径下为(D:\Auto\eclipse\workspace\Testhtml\Test) 2.通过os.getcwd()获取的路径为:D:\Auto\eclipse\works ...

  10. 安卓开发笔记(三十一):shape标签下子类根结点的具体使用

    在我的上一篇博文当中阐述了我们如何使用shape标签进行自定义控件,这里对shape控件的属性进行阐述,不知道如何使用这些属性的可以参见我的上一篇博文(自定义Button):https://www.c ...