java字符串MD5加密后再转16进制

话不多说上码

public static byte[] digest(String signStr) {
        MessageDigest md5Instance = null;
        try {
            md5Instance = MessageDigest.getInstance("MD5");
            md5Instance.update(signStr.getBytes("utf-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return md5Instance.digest();
    }

得到byte数据,转16进制后的字符串

//加密后转
        private static String byte2Hex(byte[] bytes) {
            char hexDigits[] = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘ };
            int j = bytes.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (byte byte0 : bytes) {
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        }

最终得到你想要的

原文地址:https://www.cnblogs.com/dzcici/p/10917201.html

时间: 2024-11-06 10:17:06

java字符串MD5加密后再转16进制的相关文章

字符串转成ASCII后转成16进制

// 字符串转成ASCII后转成16进制 - (NSString *) NSStringToASCIINSString:(NSString *)str1{ NSString *str4 = nil; NSMutableString *strlast = [[NSMutableString alloc]init]; for(int i = 0; i < [str1 length]; i++){ NSRange range = NSMakeRange(i, 1); NSString * str2 =

安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)

由于业务需求,需要实现在客户端对重要信息进行加密,在服务端进行解密.客户端包括IOS和安卓的 服务端位Java. 注意密钥 需要保持一致,可以自己定义 . 安卓端加密代码: ===================================================================================================================== import android.util.Base64; import java.io.Un

Android学习笔记----Java字符串MD5加密

代码如下: 1 /** 2 * MD5单向加密,32位,用于加密密码,因为明文密码在信道中传输不安全,明文保存在本地也不安全 3 * 4 * @param str 5 * @return 6 */ 7 public static String md5(String str) { 8 MessageDigest md5 = null; 9 try { 10 md5 = MessageDigest.getInstance("MD5"); 11 } catch (Exception e) {

关于java中MD5加密(可直接使用)

本文转自:http://www.cnblogs.com/solove/archive/2011/10/18/2216715.html 上部分是转载的关于字符串的加密,后半部分则比较全,包括字符串.文件.字节数组.等 package util; import java.security.MessageDigest; public class Encript { //十六进制下数字到字符的映射数组 private final static String[] hexDigits = {"0"

Java中byte与(16进制)字符串的互相转换

java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当

关于个Base64,MD5,16进制的转换

1,待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再转换为16进制字符串,即生成了数字签名. byte[] targetData = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(request + xPassword.InnerText));                StringBuilder sb = new StringBuilder("");                foreac

16进制和字符串(包括中文)的转换

package XXXX; import java.io.ByteArrayOutputStream; /** * Description  字符串(包含中文)和16进制之间的转换 */ public class CodeChange { /** * 16进制数字字符集 */ private static String hexString="0123456789ABCDEF"; public static void main(String[] args) { System.out.pr

字节流、字符串、16进制字符串转换__Java(转)

Java代码   /** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转换 * @author:xk * @date:Jan 8, 2013 5:00:08 PM */ public class TypeConversion { /** * @Title:bytes2HexString * @Description:字节数组转16进制字符串 * @param b *            字节数组 *

【python】字符串、16进制等数据处理

最近做一个socket server,需要接收组播报文,并进行分析处理.其中涉及的一个问题是,待发送的报文是字符串形式,类似"hello world". 从wireshark截取的报文看,都是16进制数据,以为必须转为该种类型才能发送,需要转换为16进制字符串,类似"0x\a00x\c30x\b4"等. 但后来发现,直接发送数据也是ok的,应该是数据发送时自己会进行转码. 不了解的时候,网上查了下,发现大家推荐用到的模块是binascii,查看help 几个方法如下