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

shz.encrypt.EncryptManager Maven / Gradle / Ivy

package shz.encrypt;

import shz.Serializer;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public interface EncryptManager {
    EncryptParam getEncryptParam(String id);

    String sign(EncryptParam encryptParam, Object data);

    default String sign(String id, Object data) {
        return sign(getEncryptParam(id), data);
    }

    void checkSign(EncryptParam encryptParam, String signature, Object data);

    default void checkSign(String id, String signature, Object data) {
        checkSign(getEncryptParam(id), signature, data);
    }

    default Encipher getEncipher(EncryptParam encryptParam) {
        return new Encipher(encryptParam);
    }

    default byte[] serialize(Object obj) {
        return Serializer.serialize(obj);
    }

    default  T deserialize(byte[] bytes) {
        return Serializer.deserialize(bytes);
    }

    default String encodeBytes(byte[] bytes) {
        return Base64.getEncoder().encodeToString(bytes);
    }

    default byte[] decodeString(String str) {
        return Base64.getDecoder().decode(str);
    }

    default byte[] stringToBytes(String str) {
        return str.getBytes(StandardCharsets.UTF_8);
    }

    default String bytesToString(byte[] bytes) {
        return new String(bytes, StandardCharsets.UTF_8);
    }

    default String encrypt(EncryptParam encryptParam, Object data) {
        return encodeBytes(getEncipher(encryptParam).encrypt(serialize(data)));
    }

    default String encrypt(String id, Object data) {
        return encrypt(getEncryptParam(id), data);
    }

    default  T decrypt(EncryptParam encryptParam, String signature, String ciphertext) {
        Encipher encipher = getEncipher(encryptParam);
        T data = deserialize(encipher.decrypt(decodeString(ciphertext)));
        checkSign(encryptParam, signature, data);
        return data;
    }

    default  T decrypt(String id, String signature, String ciphertext) {
        return decrypt(getEncryptParam(id), signature, ciphertext);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy