// 2011-07-31 johnpfeiffer unicode "encryption" by javascript and decrypted back to characters by java servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Encrypt extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException
{
String selfURL = request.getContextPath() + request.getServletPath();
String userinput = request.getParameter( "userinput" );
response.setContentType( "text/html" ); // MIME type
PrintWriter responseout = response.getWriter();
outputXHTMLHeader( "Servlet with Javascipt" , responseout );
responseout.println( "<body>" );
outputJavascriptFunctions( responseout );
displaySubmitForm( selfURL , responseout );
outputJavascript( responseout );
if( userinput != null && !userinput.isEmpty() ) // needs code injection protection
{
responseout.println( "<br /><br />" + selfURL + " received input " + userinput + "<br /><br />");
responseout.println( "decrypted: " + decryptText( userinput , responseout ) + "<br /><br />");
}
responseout.println( "</body>" );
responseout.println( "</html>" );
} //end doGet
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet( request, response);
}
private static void outputJavascriptFunctions( PrintWriter responseout )
{
responseout.println( "<script type=\"text/javascript\"> " );
responseout.println( "<!--" );
responseout.println( "function focusTextbox()" );
responseout.println( "{" );
responseout.println( " var textbox = document.getElementById( 'userinput' );" );
responseout.println( " textbox.focus(); " );
responseout.println( "}" );
responseout.println( "function encryptText( plaintext )" );
responseout.println( "{" );
responseout.println( " var array = new Array( plaintext.length);" );
responseout.println( " for( i=0 ; i < plaintext.length ; i++ )" );
responseout.println( " {" );
responseout.println( " array[ i ] = plaintext.charCodeAt( i ) " );
// DEBUGGING responseout.println( " alert( array[ i ] );" );
responseout.println( " }" );
responseout.println( " return array.toString();" );
responseout.println( "}" );
responseout.println( "function checkTextbox()" );
responseout.println( "{" );
responseout.println( " var tempvalue = document.getElementById( 'userinput' ).value;" );
responseout.println( " alert( \"cleartext: \" + tempvalue + \" with length: \" + tempvalue.length + \" becomes \" + encryptText( tempvalue ) );" );
//DEBUGGING responseout.println( " alert( encryptText( tempvalue ) )" );
responseout.println( " document.getElementById( 'userinput' ).value = encryptText( tempvalue) ; ");
responseout.println( "}" );
responseout.println( "//-->" );
responseout.println( "</script>" );
} //end outputJavascript
private static void outputJavascript( PrintWriter responseout )
{
responseout.println( "<script type=\"text/javascript\"> " );
responseout.println( "<!--" );
responseout.println( " focusTextbox();" );
responseout.println( "//-->" );
responseout.println( "</script>" );
} //end outputJavascript
private static StringBuffer decryptText( String encryptedText , PrintWriter responseout )
{
StringBuffer decryptedText = new StringBuffer();
String[] splitStringArray = encryptedText.split( ",");
int unicode;
char c;
//DEBUGGING responseout.println( java.util.Arrays.toString( splitStringArray ) + "<br /><br />");
for( int i=0; i < splitStringArray.length ; i++ )
{
//DEBUGGING responseout.println( splitStringArray[i] + "<br />");
unicode = Integer.parseInt( splitStringArray[i] );
c = (char)unicode ;
//DEBUGGING responseout.println( c + "<br />");
decryptedText.append( c );
}
return decryptedText;
} // end decryptText
private static void displaySubmitForm( String selfURL , PrintWriter responseout )
{
responseout.println( "<form name =\"submitbutton\" id=\"submitbutton\" action=\"" + selfURL + "\" method=\"post\" onsubmit=\"checkTextbox()\" >" );
//responseout.println( "<form name =\"submitbutton\" id=\"submitbutton\" action=\"" + selfURL + "\" method=\"post\" onsubmit=\"return checkTextbox()\" >" );
responseout.println( "<div><input type=\"text\" name=\"userinput\" id=\"userinput\"/></div>" );
responseout.println( "<div><input type=\"submit\"/></div>" );
responseout.println( "</form>" );
} // end displaySubmitForm
private static void outputXHTMLHeader( String title , PrintWriter responseout )
{
responseout.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");
responseout.println( "<html xmlns=\"http://www.w3.org/1999/xhtml\">" );
responseout.println( "<head><title>" + title + "</title>" );
responseout.println( "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />" );
responseout.println( "</head>" );
} //end outputXHTMLHeader
}//end class