版权声明:本文为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文件复制到项目中

package com.why.project.webutilsdemo.utils;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest; /**
* Created HaiyuKing
* Used MD5加密(基于MessageDigest)
*/
public class WebUtils { /**
* MD5加密,32位
* param str - 加密前的字符串
* http://hubingforever.blog.163.com/blog/static/171040579201210781650340/
* <br/>1、生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
* <br/>2、生成要加密的字符串的字节类型数组数组
* <br/>3、计算消息摘要,返回字节类型的数组
* <br/>4、将计算结果(byte数组)转换为字符串
* str - password
* return 5f4dcc3b5aa765d61d8327deb882cf99
* */
public static String MD5(String str)
{
MessageDigest md5 = null;
try
{//生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e)
{
e.printStackTrace();
return "";
} //生成要加密的字符串的字节类型数组数组
char[] charArray = str.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); //将计算结果(byte数组)转换为字符串
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++)
{
int val = (md5Bytes[i]) & 0xff;
if (val < 16)
{
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} /**
* 返回的结果跟上一个方法一致
* */
public static String MD5_2(String str)
{
MessageDigest md5 = null;
try
{//生成实现指定摘要算法的 MessageDigest 对象,其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e)
{
e.printStackTrace();
return "";
} //生成要加密的字符串的字节类型数组数组
byte[] byteArray1 = null;
try {
byteArray1 = str.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
md5.update(byteArray1);
//计算消息摘要,返回字节类型的数组
byte[] md5Bytes = md5.digest(); //将计算结果(byte数组)转换为字符串
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++)
{
int val = (md5Bytes[i]) & 0xff;
if (val < 16)
{
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} }

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

三、使用方法

package com.why.project.webutilsdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; import com.why.project.webutilsdemo.utils.WebUtils; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); String md5= WebUtils.MD5("password");
Log.w("MainActivity","md5="+md5);
}
}

打印日志如下:

混淆配置

参考资料

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. 树莓派.设置无线网卡为AP工作模式(pi2和pi3)

    树莓派2的设置办法: 1. 安装NetworkManager管理工具(可选),以支持nmcli命令 sudo apt-get install -y network-manager 2. 安装hosta ...

  2. index_init_oprions.go

    {         options.DocCacheSize = defaultDocCacheSize     } }

  3. 单机部署-consul

    在本机开发环境中,直接通过以下命令可以启动一个单机consul服务器: ./consul agent -server -data-dir=/tmp/consul -bootstrap -adverti ...

  4. bzoj 1210 [HNOI2004] 邮递员 插头dp

    插头dp板子题?? 搞了我一晚上,还tm全是抄的标程.. 还有高精,哈希混入,还是我比较弱,orz各种dalao 有不明白的可以去看原论文.. #include<cstdio> #incl ...

  5. BZOJ_1878_[SDOI2009]HH的项链_莫队

    BZOJ_1878_[SDOI2009]HH的项链_莫队 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考 ...

  6. 操作系统--进程管理(Processing management)

    一.进程的组成 进程通常由程序.数据和进程控制块(Process Control Block,PCB)组成. 二. 进程的状态以及状态切换 进程执行时的间断性决定了进程可能具有多种状态,最基本的三种状 ...

  7. PCB泪滴设计

    操作:选择[Tools]-->[Teardrops],快捷键T+E.打开[Teardrop Options]对话框进行设置.如下图所示: 对话框面板介绍 [General] 1.该区域的[Pad ...

  8. 解决 'boost/iterator/iterator_adaptor.hpp' file not found’ 及控制台":CFBundleIdentifier", Does Not Exist

    "react-native": "0.46.1" 这个问题产生原因: * /Users/Vanessa/.rncache 中 boost_1_63_0.tar. ...

  9. php session序列化攻击面浅析

    目录 0x00 首先,session_start()是什么? 0x01 初识php-session序列化机制 0x02 php_serialize引擎(反)序列化测试 0x03 当使用不同的引擎来处理 ...

  10. React + TypeScript:元素引用的传递

    React 中需要操作元素时,可通过 findDOMNode() 或通过 createRef() 创建对元素的引用来实现.前者官方不推荐,所以这里讨论后者及其与 TypeScript 结合时如何工作. ...