anchor.diff:  				// can't throw this exception in initializer, but this will log it
   				createObject("component", "org.owasp.esapi.errors.EncryptionException").init(variables.ESAPI, "Encryption failure", "Error creating Encryptor", e);
   			}
  -		
  +
   			return this;
   		</cfscript>
  -		
  -	</cffunction>
  -	
  +
  +	</cffunction>
  +
   	<cffunction access="public" returntype="String" name="hashString" output="false"
   	            hint="Hashes the data using the specified algorithm and the Java MessageDigest class. This method first adds the salt, a separator (':'), and the data, and then rehashes 1024 times to help strengthen weak passwords.">
   		<cfargument required="true" type="String" name="plaintext"/>
   		<cfargument required="true" type="String" name="salt"/>
  -	
  +
   		<cfscript>
   			// CF8 requires 'var' at the top
   			var digest = "";
   			var i = "";
   			var encoded = "";
  -		
  +
   			var bytes = "";
   			try {
   				digest = newJava("java.security.MessageDigest").getInstance(variables.hashAlgorithm);
  
positive.code: 			catch(org.owasp.esapi.errors.EncryptionException e) {
  				throwException(createObject("component", "org.owasp.esapi.errors.EncryptionException").init(variables.ESAPI, "Invalid seal", "Seal did not decrypt properly", e));
  			}
  		
  			index = plaintext.indexOf(":");
  			if(index == -1) {
  				throwException(createObject("component", "org.owasp.esapi.errors.EncryptionException").init(variables.ESAPI, "Invalid seal", "Seal did not contain properly formatted separator"));
  			}
  		
  			timestring = plaintext.substring(0, index);
  			timestamp = newJava("java.util.Date").init().getTime();
  			expiration = newJava("java.lang.Long").init(timestring);
  			if(timestamp > expiration) {
  				throwException(createObject("component", "org.owasp.esapi.errors.EncryptionException").init(variables.ESAPI, "Invalid seal", "Seal expiration date has expired"));
  			}
  		
  			index = plaintext.indexOf(":", index + 1);
  			sealedValue = plaintext.substring(index + 1);
  			return sealedValue;
  		</cfscript>
  		
  	</cffunction>
  	
  	<cffunction access="public" returntype="boolean" name="verifySeal" output="false">
  		<cfargument required="true" type="String" name="seal"/>
  	
  		<cfscript>
  			try {
  				unseal(arguments.seal);
  
negative.code: 				digest.update(variables.ESAPI.securityConfiguration().getMasterSalt());
  				digest.update(newJava("java.lang.String").init(arguments.salt).getBytes());
  				digest.update(newJava("java.lang.String").init(arguments.plaintext).getBytes());
  
  				// rehash a number of times to help strengthen weak passwords
  				bytes = digest.digest();
  				for(i = 0; i < 1024; i++) {
  