/*
* Created by LuaView.
* Copyright (c) 2017, Alibaba Group. All rights reserved.
*
* This source code is licensed under the MIT.
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
*/
package com.taobao.luaview.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* hash manager
*
* @author song
*/
public class EncryptUtil {
/**
* sha256 encrypteion
* @param s
* @return
*/
public static String sha256(String s) {
return encrypt(s, "SHA-256");
}
/**
* sha256 encrypteion
* @param s
* @return
*/
public static byte[] sha256(byte[] s) {
return encrypt(s, "SHA-256");
}
/**
* rsa encryption
*
* @param s
* @return
*/
public static String rsa(String s) {
return encrypt(s, "rsa");
}
/**
* aes 256 encryption
*
* @param s
* @return
*/
public static String aes256(String s) {
return encrypt(s, "AES");
}
/**
* md5
*
* @param s
* @return
*/
public static byte[] md5(byte[] s) {
return encrypt(s, "MD5");
}
/**
* md5
*
* @param s
* @return
*/
public static String md5(String s) {
return encrypt(s, "MD5");
}
/**
* md5
*
* @param s
* @return
*/
public static String md5Hex(String s) {
return toHexString(encrypt(s, "MD5").getBytes());
}
/**
* SHA1 algorithm
*/
public static String sha1(String s) {
return encrypt(s, "SHA-1");
}
/**
* encrypt method
*
* @param s
* @param method encrypt type
* @return
*/
private static String encrypt(String s, String method) {
try {
MessageDigest digest = MessageDigest.getInstance(method);
digest.update(s.getBytes());
return new String(digest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
/**
* encrypt method
*
* @param s
* @param method encrypt type
* @return
*/
private static byte[] encrypt(byte[] s, String method) {
try {
MessageDigest digest = MessageDigest.getInstance(method);
digest.update(s);
return digest.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
/**
* to hex string
*
* @param keyData
* @return
*/
private static String toHexString(byte[] keyData) {
if (keyData == null) {
return null;
}
int expectedStringLen = keyData.length * 2;
StringBuilder sb = new StringBuilder(expectedStringLen);
for (int i = 0; i < keyData.length; i++) {
String hexStr = Integer.toString(keyData[i] & 0x00FF, 16);
if (hexStr.length() == 1) {
hexStr = "0" + hexStr;
}
sb.append(hexStr);
}
return sb.toString();
}
}