All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gitee.feizns.dynamic.decrypt.Encrypts Maven / Gradle / Ivy

There is a newer version: 6.1-RELEASE
Show newest version
package com.gitee.feizns.dynamic.decrypt;

import com.gitee.feizns.dynamic.Strings;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Formatter;

/**
 * 加解密工具类
 * 

* 常用加密解密算法的工具类 *

* @author feizns */ public class Encrypts { /** * 16进制字符 */ private static final char[] hexDigits = "0123456789ABCDEF".toCharArray(); /** * SHA1加密 * @param string {@link String} * @return 返回加密后的字符 */ public static String sha1(String string) { return update(string, "SHA1"); } /** * SHA-256加密 * @param string {@link String} * @return 加密后的字符 */ public static String sha256(String string) { return update(string, "SHA-256"); } /** * SHA-512加密 * @param string {@link String} * @return 加密后的字符 */ public static String sha512(String string) { return update(string, "SHA-512"); } /** * md5加密 * @param string {@link String} * @return 加密字符 */ public static String md5(String string) { return update(string, "MD5"); } /** * 对普通字符进行base64编码 * @param str {@link String} * @return 编码后的字符 */ public static String base64Encode(String string) { return new String(base64Encode(Strings.bytes(string))); } /** * 对普通字符进行base64编码 * @param bytes 字节数据 * @return 编码后的字符 */ public static byte[] base64Encode(byte[] bytes) { return Base64.getEncoder().encode(bytes); } /** * 对base64字符str进行解码 * @param str {@link String} * @return 解码后的字符 */ public static String base64Decode(String string) { return new String(base64Decode(Strings.bytes(string))); } /** * 对base64字符str进行解码 * @param bytes {@link Byte} * @return 解码后的字符 */ public static byte[] base64Decode(byte[] bytes) { return Base64.getDecoder().decode(bytes); } /** * 指定对于字符的加密算法并做加密转换 * @see #update(byte[], String) * @param string {@link String} * @param algorithm 算法 * @return 加密后的字符 */ private static String update(String string, String algorithm) { return update(Strings.bytes(string), algorithm); } /** * 指定对于字符的加密算法并做加密转换 * @param bytes {@link Byte} * @param algorithm 算法 * @return 加密后的字符 */ private static String update(byte[] bytes, String algorithm) { try { MessageDigest mdTemp = MessageDigest.getInstance(algorithm); mdTemp.update(bytes); byte[] md = mdTemp.digest(); int j = md.length; char[] buf = new char[j * 2]; int k = 0; for (byte byte0 : md) { buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } /** * Java生成MD5的坑 * @param bytes 字节 * @return 16进制字符 */ private static String toHexString(byte[] bytes) { try ( Formatter formatter = new Formatter() ) { for (byte b : bytes) { formatter.format("%02x", b); } return formatter.toString(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy