Android之简单加密–MD5 加密

本文介绍在Android中如何对关键数据进行MD5加密,包括用户短信备份、账户密码和服务器连接数据,并概述了Java8基本数据类型的长度及字符串到字节数组的转换原理。同时提及了Java中字符串到字节数组的转换过程,解释了英文、数字与中文字符在转换为字节时的长度区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android中需要对各种数据进行加密的操作,比如用户短信备份的数据加密、用户账户登陆的密码加密以及应用于服务器连接传递重要数据的加密,用处非常的多

这里介绍一下MD5加密:

public class MD5Utils {
     // 进行md5的加密运算
     public static String encode(String password) {
        // MessageDigest专门用于加密的类
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            byte[] result = messageDigest.digest(password.getBytes()); // 得到加密后的字符组数
 
            StringBuffer sb = new StringBuffer();
 
            for (byte b : result) {
               int num = b & 0xff; // 这里的是为了将原本是byte型的数向上提升为int型,从而使得原本的负数转为了正数
               String hex = Integer.toHexString(num); //这里将int型的数直接转换成16进制表示
               //16进制可能是为1的长度,这种情况下,需要在前面补0,
               if (hex.length() == 1) {
                   sb.append(0);
               }
               sb.append(hex);
            }
 
            return sb.toString();
 
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
     }
 }

MD5的加密实现方式是被谷歌屏蔽起来的,所以这只能想黑盒子测试一样去了解它的作用,那么这里是将传入的字符串转换成16位16进制的字符串从而起到加密的作用,中间对于&0Xff也已经做出了解释。这里顺便记录一下java的基础知识,不用真的还比较容易忘记。

java 8大基本数据类型:

类型            长度(字节为单位,一个字节是8位也就是0000 0000,如果是字就是16位 0000 0000 0000 0000)
boolean–>1
char–>2

byte–>1
short–>2
int–>4
long–>8

float–>4
double–>8

PS:在java中,有一个字符串的操作

public void test3()
 {
     <span style="text-decoration: underline;">String</span> password = "1203";
     byte[] bytes = password.getBytes();
 
     for(byte b: bytes)
     {
        System.out.println(b);
     }
 }

需要做出的基本解释,就是这里java会将字符串中的内容转换成字节数组进行输出,规律如下:

    1. 英文单字 一个对应一个字节
    2. 数字一般也是一个数字对应一个字节
    3. 中文的话一般是一个中文对应3个字节来表示。(这里不是非常的明白,为什么一个中文对应3个字节)

转载自:http://www.cnblogs.com/Jacky-Fight/p/3627436.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值