Md5加密中文的坑

遇到过加密中文参数,一直都是用一个通用的类来加密public static String MD5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); }c
摘要由CSDN通过智能技术生成
遇到过加密中文参数,一直都是用一个通用的类来加密

public static String MD5(String str)  
    {  
        MessageDigest md5 = null;  
        try  
        {  
            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);  
          
        StringBuffer hexValue = new StringBuffer();  
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用MessageDigest类进行MD5加密,包括中文。具体步骤如下: 1. 将需要加密的字符串转换为字节数组,可以使用getBytes()方法。 2. 获取MessageDigest实例,可以使用getInstance("MD5")方法。 3. 将字节数组传入MessageDigest实例的update()方法。 4. 调用digest()方法获取加密后的字节数组。 5. 将字节数组转换为十六进制字符串,可以使用BigInteger类的toString()方法。 示例代码如下(假设需要加密的字符串为"hello world"): ```java import java.math.BigInteger; import java.security.MessageDigest; public class MD5Util { public static String md5(String input) { try { // 将字符串转换为字节数组 byte[] inputBytes = input.getBytes("UTF-8"); // 获取MessageDigest实例 MessageDigest md = MessageDigest.getInstance("MD5"); // 将字节数组传入MessageDigest实例的update()方法 md.update(inputBytes); // 调用digest()方法获取加密后的字节数组 byte[] digestBytes = md.digest(); // 将字节数组转换为十六进制字符串 BigInteger bigInt = new BigInteger(1, digestBytes); String output = bigInt.toString(16); // 如果十六进制字符串长度不足32位,前面补0 while (output.length() < 32) { output = "0" + output; } return output; } catch (Exception e) { e.printStackTrace(); return null; } } } String input = "你好,世界!"; String output = MD5Util.md5(input); System.out.println(output); // 输出:d3d9446802a44259755d38e6d163e820 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值