Android中的MD5加密

MD5是一个安全的散列算法,有两个特点:1、输入两个不同的明文(一段原始的数字信息)不会得到相同的输出值2、根据输出值,不能得到原始的明文,即过程不可逆所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,然后在所谓的解密的时候,都是通过这个映射表来查找其所对应的原始明文。而绝对没有一种算法,可以通过输出加密后的散列值算出原始明文。使用MD5加密的原因就是为了数据的安全性曾经一些公司服务器数据库明文存储数据,最后造成严重后果。源码:
	 * MD5加密
	 */
    private String getMD5Str(String str) {     
        MessageDigest messageDigest = null;     
     
        try {     
            messageDigest = MessageDigest.getInstance("MD5");     
     
            messageDigest.reset();     
     
            messageDigest.update(str.getBytes("UTF-8"));     
        } catch (NoSuchAlgorithmException e) {     
            System.out.println("NoSuchAlgorithmException caught!");     
            System.exit(-1);     
        } catch (UnsupportedEncodingException e) {     
            e.printStackTrace();     
        }     
     
        byte[] byteArray = messageDigest.digest();     
     
        StringBuffer md5StrBuff = new StringBuffer();     
        
        for (int i = 0; i < byteArray.length; i++) {                 
            if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)     
                md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));     
            else     
                md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));     
        }     
      //16位加密,从第9位到25位
        return md5StrBuff.substring(8, 24).toString().toUpperCase();    
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值