com.anlavn.hash.SHA Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of AL-Library_VN Show documentation
Show all versions of AL-Library_VN Show documentation
Java library for many thing wonderful
package com.anlavn.hash;
// Make By Bình An || AnLaVN || KatoVN
import com.anlavn.file.Log;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**Lớp SHA256 chỉ hỗ trợ mã hóa đối tượng, giải mã nó là bất khả thi.
* SHA256 sử dụng hàm băm mật mã học Secure Hash Algorithm 2 được thiết kế bởi Cơ quan An ninh Quốc gia Hoa Kỳ với giá trị băm dài 256-bit.
*
Đảm bảo rằng lớp đối tượng của bạn đã "implements Serializable".
* @author AnLaVN
*/
public class SHA {
private static String Encrypt(Types type, final byte[] bytes){
try {
final MessageDigest digest = MessageDigest.getInstance(type.toString().replaceFirst("_", "-"));
final byte[] hash = digest.digest(bytes);
final StringBuilder hexString = new StringBuilder();
for (int i = 0; i < hash.length; i++) {
final String hex = Integer.toHexString(0xff & hash[i]);
if (hex.length() == 1) { hexString.append('0'); }
hexString.append(hex);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
Log.add("!!! Error try to Encrypt SHA256 !!!\n\tError code: " + e.toString());
return null;
}
}
/**Họ SHA (Thuật toán băm an toàn) chỉ định một họ gồm 8 hàm băm khác nhau.
*/
public enum Types{
/** Ðầu ra: 224 bit ~ 56 ký tự
*/
SHA_224,
/** Ðầu ra: 256 bit ~ 64 ký tự
*/
SHA_256,
/** Ðầu ra: 384 bit ~ 96 ký tự
*/
SHA_384,
/** Ðầu ra: 512 bit ~ 128 ký tự
*/
SHA_512,
/** Ðầu ra: 224 bit ~ 56 ký tự
*/
SHA3_224,
/** Ðầu ra: 256 bit ~ 64 ký tự
*/
SHA3_256,
/** Ðầu ra: 384 bit ~ 96 ký tự
*/
SHA3_384,
/** Ðầu ra: 512 bit ~ 128 ký tự
*/
SHA3_512
}
/**Sử dụng phương thức này để mã hóa đối tượng gốc.
* @param type là loại Họ SHA dùng để mã hoá.
* @param objToEncrypt là đối tượng cần mã hóa.
* @return mã băm SHA256 của đối tượng ban đầu.
*/
public static final String Encrypt(Types type, final Object objToEncrypt) {
try {
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(objToEncrypt); oos.flush();
return Encrypt(type, bos.toByteArray());
} catch (IOException e) {
Log.add("!!! Error try to Encrypt SHA256 an Object. Can not parse Object to bytes. !!!\n\tError code: " + e.toString());
return null;
}
}
/**Sử dụng phương thức này để mã hóa chuỗi gốc.
* @param type là loại Họ SHA dùng để mã hoá.
* @param strToEncrypt là chuỗi cần mã hóa.
* @return mã băm SHA256 của chuỗi ban đầu.
*/
public static final String Encrypt(Types type, final String strToEncrypt) {
return Encrypt(type, strToEncrypt.getBytes());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy