Java编码摘要算法实例解析
这篇文章主要介绍了Java编码摘要算法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
URL编码与解码
Strings="你好,世界!"; //URL编码 StringurlEncodedString=URLEncoder.encode(s,"UTF-8"); //URL解码 StringurlDecodedString=URLDecoder.decode(urlEncodedString,"UTF-8");
Base64编码与解码
//Base64编码
Stringbase64EncodedString=Base64
.getEncoder()
//去掉Base64后补位的=
.withoutPadding()
.encodeToString("你好,世界!!".getBytes(StandardCharsets.UTF_8));
//Base64解码
byte[]base64DecodedByteArray=Base64.getDecoder().decode(base64EncodedString);
Stringbase64DecodedString=newString(base64DecodedByteArray,StandardCharsets.UTF_8);
byte[]转16进制字符串
后面摘要算法可视化结果时会用到
/**
*byte[]按位转换为16进制String
*@paramaData需要转换的byte[]
*@returnbyte[]按位转换为的16进制String
*/
publicstaticStringbyteArrayToHexString(byte[]aData){
finalchar[]hexChars="0123456789abcdef".toCharArray();
//一个字节用两个16进制字符表示
StringBuilderstringBuilder=newStringBuilder(aData.length*2);
for(byteb:aData){
//高4位转换为16进制
stringBuilder.append(hexChars[(b>>>4)&0x0f]);
//低4位转换为16进制
stringBuilder.append(hexChars[b&0x0f]);
}
returnstringBuilder.toString();
}
MD5算法
//参数为摘要算法的名称
MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
//以下两行代码相当于messageDigest.update("你好,世界!".getBytes(StandardCharsets.UTF_8));
messageDigest.update("你好,".getBytes(StandardCharsets.UTF_8));
messageDigest.update("世界!".getBytes(StandardCharsets.UTF_8));
byte[]md5Bytes=messageDigest.digest();
SHA1算法
//SHA256把算法名称换一下就行了
MessageDigestmessageDigest=MessageDigest.getInstance("SHA1");
//以下两行代码相当于messageDigest.update("你好,世界!".getBytes(StandardCharsets.UTF_8));
messageDigest.update("你好,".getBytes(StandardCharsets.UTF_8));
messageDigest.update("世界!".getBytes(StandardCharsets.UTF_8));
byte[]md5Bytes=messageDigest.digest();
,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值