首页 / JAVA / JAVA几种简单的单向加密方式
JAVA几种简单的单向加密方式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA几种简单的单向加密方式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2890字,纯文字阅读大概需要5分钟。
内容图文
![JAVA几种简单的单向加密方式](/upload/InfoBanner/zyjiaocheng/851/bb267a0c8b7e453e87d89351a7d36c72.jpg)
本问只简要讲解在JAVA中如何使用几种加密的代码示例,关于加密算法和数学知识不在本文讨论范围。
package com.util;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
/**
* 常见的一些加密方式JAVA实现
*
* @author Administrator
*
*/
public class EncryptionUtil {
/**
* MD5 加密
*/
public static String getMD5(String str) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
String substring = new BigInteger(1, md.digest()).toString(16).substring(8, 24);
return substring;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
/*
* 利用sha1加密
*
*/
public static String getSha1(String str) {
if (str == null || str.length() == 0) {
return null;
}
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));
byte[] md = mdTemp.digest();
int j = md.length;
char buf[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (Exception e) {
// TODO: handle exception
return null;
}
}
/**
* 使用java8版本base64编码
*
* @param str
* @return
*/
public static void getBase64(String str) {
Base64.Decoder decoder = Base64.getDecoder();
Base64.Encoder encoder = Base64.getEncoder();
try {
byte[] textByte = str.getBytes("UTF-8");
// 编码
final String encodedText = encoder.encodeToString(textByte);
System.out.println(encodedText);
// 解码
System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* HmacSHA1加密
*
* @param data
* @param key
* @return
*/
public static String hamcsha1(byte[] data, byte[] key) {
try {
SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
return byte2hex(mac.doFinal(data));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
return null;
}
/**
* 将HmacSHA1加密之后的内容转换为字符串
*
* @param b
* @return
*/
public static String byte2hex(byte[] b) {
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; b != null && n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1)
hs.append('0');
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
}
以上几种加密都是非对称加密,MD5一般使用场景是:密码加密、软件校对是否已修改过、获得指定长度的随机数 等.SHA1和MD5差不多,只是算法不太一样,HMAC一般防止伪造消息
内容总结
以上是互联网集市为您收集整理的JAVA几种简单的单向加密方式全部内容,希望文章能够帮你解决JAVA几种简单的单向加密方式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。