/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.image.param;
import org.apache.commons.codec.binary.Hex;
/**
* This parameter serializer inverts the value and encodes it with base64 and URL encoding.
*/
public final class EncryptedParameterSerializer
extends AbstractParameterSerializer
{
public String serialize( String value )
{
return encode( reverse( value ) );
}
public String deserialize( String value )
{
return reverse( decode( value ) );
}
private String reverse( String value )
{
int i, len = value.length();
StringBuffer dest = new StringBuffer( len );
for ( i = ( len - 1 ); i >= 0; i-- )
{
dest.append( value.charAt( i ) );
}
return dest.toString();
}
private String encode( String value )
{
return new String( Hex.encodeHex( value.getBytes() ) );
}
private String decode( String value )
{
try
{
return new String( Hex.decodeHex( value.toCharArray() ) );
}
catch ( Exception e )
{
return null;
}
}
}