litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.encryption.symmetric; public interface SymmetricEncryptorManager { /** * Adds a decryptor to the supported list */ public abstract void addDecryptor( SymmetricEncryptor pSymmetricEncryptor ); /** * Set the "current" Encryptor */ public abstract void setSymmetricEncryptor( SymmetricEncryptor pSymmetricEncryptor ); /** * @return The "current" Encryptor (the initial SE is BrainDeadSymmetricEncryptor) */ public abstract SymmetricEncryptor getSymmetricEncryptor(); /** * @return null if not found! */ public abstract SymmetricEncryptor getSymmetricEncryptor( String pIdentifierAndVersion ); public static class Helper { public static String fromEncrypted( SymmetricEncryptorManager pSymmetricEncryptorManager, String pEncryptedText ) { if ( pEncryptedText == null ) { return null; } SymmetricEncryptor zSE = pSymmetricEncryptorManager.getSymmetricEncryptor(); String zIDnVerPrefix = zSE.getIdentifierAndVersion() + ":"; if ( !pEncryptedText.startsWith( zIDnVerPrefix ) ) { int zVerSepAt = pEncryptedText.indexOf( ':' ); if ( zVerSepAt == -1 ) { throw new IllegalStateException( "Encrypted Field w/o Identifier And Version" ); } String zIdAndVer = pEncryptedText.substring( 0, zVerSepAt ); zSE = pSymmetricEncryptorManager.getSymmetricEncryptor( zIdAndVer ); if ( zSE == null ) { throw new IllegalStateException( "Encrypted Field with an unsupported Identifier And Version (" + zIdAndVer + ")" ); } } return zSE.decrypt( pEncryptedText.substring( zIDnVerPrefix.length() ) ); } public static String toEncrypted( SymmetricEncryptorManager pSymmetricEncryptorManager, String pPlainText ) { if ( pPlainText == null ) { return null; } SymmetricEncryptor zSE = pSymmetricEncryptorManager.getSymmetricEncryptor(); return zSE.getIdentifierAndVersion() + ":" + zSE.encrypt( pPlainText ); } } } |