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

io.ebean.platform.oracle.OracleDbEncrypt Maven / Gradle / Ivy

There is a newer version: 15.8.1
Show newest version
package io.ebean.platform.oracle;

import io.ebean.config.dbplatform.AbstractDbEncrypt;
import io.ebean.config.dbplatform.DbEncryptFunction;

/**
 * Oracle encryption support.
 *
 * 

* You will typically need to create your own encryption and decryption * functions similar to the example ones below. *

* *
 *
 *  // Remember your DB user needs execute privilege on DBMS_CRYPTO
 *  // as well as your encryption and decryption functions
 *
 *
 *  // This is an Example Encryption function only - please create your own.
 *
 * CREATE OR REPLACE FUNCTION eb_encrypt(data IN VARCHAR, key in VARCHAR) RETURN RAW IS
 *
 *     encryption_mode NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC  + DBMS_CRYPTO.PAD_PKCS5;
 *
 *     BEGIN
 *          RETURN DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW (data, 'AL32UTF8'),
 *            encryption_mode, UTL_I18N.STRING_TO_RAW(key, 'AL32UTF8') );
 *     END;
 *     /
 *
 *
 *
 *  // This is an Example Decryption function only - please create your own.
 *
 * CREATE OR REPLACE FUNCTION eb_decrypt(data IN RAW, key IN VARCHAR) RETURN VARCHAR IS
 *
 *     encryption_mode NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC  + DBMS_CRYPTO.PAD_PKCS5;
 *
 *     BEGIN
 *          RETURN UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.DECRYPT
 *            (data, encryption_mode, UTL_I18N.STRING_TO_RAW(key, 'AL32UTF8')));
 *     END;
 *     /
 * 
*/ public class OracleDbEncrypt extends AbstractDbEncrypt { /** * Constructs the Oracle10DbEncrypt with default encrypt and decrypt stored procedures. */ public OracleDbEncrypt() { this("eb_encrypt", "eb_decrypt"); } /** * Constructs the Oracle10DbEncrypt specifying encrypt and decrypt stored procedures. * * @param encryptFunction the encrypt stored procedure * @param decryptFunction the decrypt stored procedure */ public OracleDbEncrypt(String encryptFunction, String decryptFunction) { this.varcharEncryptFunction = new OraVarcharFunction(encryptFunction, decryptFunction); this.dateEncryptFunction = new OraDateFunction(encryptFunction, decryptFunction); } /** * VARCHAR encryption/decryption function. */ private static class OraVarcharFunction implements DbEncryptFunction { private final String encryptfunction; private final String decryptfunction; public OraVarcharFunction(String encryptfunction, String decryptfunction) { this.encryptfunction = encryptfunction; this.decryptfunction = decryptfunction; } @Override public String getDecryptSql(String columnWithTableAlias) { return decryptfunction + "(" + columnWithTableAlias + ",?)"; } @Override public String getEncryptBindSql() { return encryptfunction + "(?,?)"; } } /** * DATE encryption/decryption function. */ private static class OraDateFunction implements DbEncryptFunction { private final String encryptfunction; private final String decryptfunction; public OraDateFunction(String encryptfunction, String decryptfunction) { this.encryptfunction = encryptfunction; this.decryptfunction = decryptfunction; } @Override public String getDecryptSql(String columnWithTableAlias) { return "to_date(" + decryptfunction + "(" + columnWithTableAlias + ",?),'YYYYMMDD')"; } @Override public String getEncryptBindSql() { return encryptfunction + "(to_char(?,'YYYYMMDD'),?)"; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy