RediSkript/RediSkript-core/src/main/java/net/limework/rediskript/data/Encryption.java

37 lines
1.3 KiB
Java
Raw Normal View History

package net.limework.rediskript.data;
2020-06-28 14:40:53 +00:00
import org.cryptomator.siv.SivMode;
import org.cryptomator.siv.UnauthenticCiphertextException;
import javax.crypto.IllegalBlockSizeException;
import java.nio.charset.StandardCharsets;
public class Encryption {
2021-05-16 22:10:02 +00:00
private final boolean encryptionEnabled;
2020-06-28 14:40:53 +00:00
private String encryptionKey;
private String macKey;
private final SivMode AES_SIV = new SivMode();
2021-05-16 22:10:02 +00:00
public Encryption(boolean encryptionEnabled, String encryptionKey, String macKey){
this.encryptionEnabled = encryptionEnabled;
if (this.encryptionEnabled) {
// AES encryption
2021-05-16 22:10:02 +00:00
this.encryptionKey = encryptionKey;
this.macKey = encryptionKey;
2020-06-28 14:40:53 +00:00
}
}
public boolean isEncryptionEnabled() { return encryptionEnabled; }
public String decrypt(byte[] message) throws UnauthenticCiphertextException, IllegalBlockSizeException {
return new String(AES_SIV.decrypt(encryptionKey.getBytes(StandardCharsets.UTF_8), macKey.getBytes(StandardCharsets.UTF_8), message), StandardCharsets.UTF_8);
2020-06-28 14:40:53 +00:00
}
public byte[] encrypt(String message) {
return AES_SIV.encrypt(encryptionKey.getBytes(StandardCharsets.UTF_8), macKey.getBytes(StandardCharsets.UTF_8), message.getBytes(StandardCharsets.UTF_8));
2020-06-28 14:40:53 +00:00
}
}