当前位置:首页 > Android > 正文内容

android环境下两种md5加密方式

jsc9年前 (2016-09-19)Android3996

在平时开发过程中,MD5加密是一个比较常用的算法,最常见的使用场景就是在帐号注册时,用户输入的密码经md5加密后,传输至服务器保存起来。虽然md5加密经常用,但是md5的加密原理我还真说不上来,对md5的认知目前仅仅停留在会使用的水平,想搞清楚还是要花点时间的,这是md5加密算法的 dex" style="color: rgb(148, 148, 148); text-decoration: none; transition: 0.25s; outline: none 0px; border-bottom: 1px dashed rgb(148, 148, 148); font-style: italic; font-weight: bold;">相关介绍 。 本文主要介绍android平台下两种md5加密方式,分别为基于java语言的md5加密及ndk环境下基于c语言的md5加密。

下面代码为基于java语言的md5加密:

public String getMD5(String info)  
{  
    try  
    {  
        MessageDigest md5 = MessageDigest.getInstance("MD5");  
        md5.update(info.getBytes("UTF-8"));  
        byte[] encryption = md5.digest();  
              
        StringBuffer strBuf = new StringBuffer();  
        for (int i = 0; i < encryption.length; i++)  
        {  
            if (Integer.toHexString(0xff & encryption[i]).length() == 1)  
            {  
                strBuf.append("0").append(Integer.toHexString(0xff & encryption[i]));  
            }  
            else  
            {  
                strBuf.append(Integer.toHexString(0xff & encryption[i]));  
            }  
        }  
              
        return strBuf.toString();  
    }  
    catch (NoSuchAlgorithmException e)  
    {  
        return "";  
    }  
    catch (UnsupportedEncodingException e)  
    {  
        return "";  
    }  
}

下面代码为ndk环境下基于c语言的md5加密:

include <jni.h>  
#include <stdio.h>  
#include <string.h>  
#include "md5.h"  
  
// md5加密  
JNIEXPORT jstring JNICALL Java_com_example_testmd5_MainActivity_encryptByMD5(JNIEnv *env, jclass obj, jstring strText)  
{  
    char* szText = (char*)(*env)->GetStringUTFChars(env, strText, 0);  
  
    MD5_CTX context = { 0 };  
    MD5Init(&context);  
    MD5Update(&context, szText, strlen(szText));  
    unsigned char dest[16] = { 0 };  
    MD5Final(dest, &context);  
    (*env)->ReleaseStringUTFChars(env, strText, szText);  
  
    int i = 0;  
    char szMd5[32] = { 0 };  
    for (i = 0; i < 16; i++)  
    {  
        sprintf(szMd5, "%s%02x", szMd5, dest[i]);  
    }  
  
    return (*env)->NewStringUTF(env, szMd5);  
}

不过上述代码仅仅为其中一部分,因为md5加密算法的c源码文件较长,就不显示在这里了,想研究的同学可以下载完整工程查看,工程下载链接为:http://download.csdn.net/detail/u013085897/8097613。工程运行结果如下图所示,hello world为待加密的字符串。

2432.png

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/126.html

标签: dex数据加密
分享给朋友:

“android环境下两种md5加密方式” 的相关文章

Android中AsyncTask的简单用法

Android中AsyncTask的简单用法

        在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好 的用户体验。但是在子线程中无法去操作主线程(UI 线...

android异步任务详解 AsynTask

android异步任务详解 AsynTask

android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者都可以实现同样的功能。本文后面将对AsynTask和Thread...

android json解析及简单例子

JSON的定义:       一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式...

Android 更换皮肤思路及解决方案

Android 更换皮肤思路及解决方案

本篇博客要给大家分享的一个关于Android应用换肤的Demo,大家可以到我的github去下载demo,以后博文涉及到的代码均会上传到github中统一管理。 github地址:https://github.com/devilWwj/Android-skin-upda...

GridView中item高度自适应

item高度自适应public class MyAdapter extends BaseAdapter {         GridView mGv;&n...

onTextChanged参数解释及实现EditText字数监听

由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher。它有三个成员方法,第一个after很简单,这个方法就是在EditText内容已经改变之后调用,重点看下面两个方法:beforeTextChanged(CharSequ...