anchor.diff:  	*/
   	private void function saveKeyRingToDisk( required array keyRing ) {
   
  -		// serialize the keyring into JSON
  -		variables.jsonArray = serializeJSON( arguments.keyRing );
  -
  -		// encrypt the JSON with the master key
  -		variables.encJson = dataEnc( variables.jsonArray, 'master' );
  -
  -		// convert the encrypted data to binary
  -		variables.binaryJson = charsetDecode( variables.encJson, "utf-8" );
  -
   		// write the keyring file to disk
  -		fileWrite( variables.keyRingPath, variables.binaryJson );
  +		fileWrite( variables.keyRingPath, charsetDecode( dataEnc( serializeJSON( arguments.keyRing ), 'master' ), 'utf-8' ) );
   
   	}
   
  
positive.code: 		var lastPass = '';
  		
  		// check if the passed value has length
  		if( len( arguments.value ) ) {
  		
  			// it does, check if the mode of the encryption is 'db'
  			if( findNoCase( 'db', arguments.mode ) ) {
  	
  				// using database encryption, decrypt with the third set of keys and algorithm
  				var onePass = Decrypt( arguments.value, variables.encryptionKey3, variables.encryptionAlgorithm3, variables.encryptionEncoding3 );
  				// and again with the second set of keys and algorithm
  				var twoPass = Decrypt( onepass, variables.encryptionKey2, variables.encryptionAlgorithm2, variables.encryptionEncoding2 );
  				// and again with the first set of keys and algorithm
  				var lastPass = Decrypt( twopass, variables.encryptionKey1, variables.encryptionAlgorithm1, variables.encryptionEncoding1 );
  		
  			// otherwise, check if the mode of the encryption is 'repeatable'
  			} else if( findNoCase( 'repeatable', arguments.mode ) ) {
  	
  				// using database encryption, decrypt with the third set of keys and algorithm
  				var onePass = Decrypt( arguments.value, variables.encryptionKey3, listFirst( variables.encryptionAlgorithm3, '/' ), variables.encryptionEncoding3 );
  				// and again with the second set of keys and algorithm
  				var twoPass = Decrypt( onepass, variables.encryptionKey2, listFirst( variables.encryptionAlgorithm2, '/' ), variables.encryptionEncoding2 );
  				// and again with the first set of keys and algorithm
  				var lastPass = Decrypt( twopass, variables.encryptionKey1, listFirst( variables.encryptionAlgorithm1, '/' ), variables.encryptionEncoding1 );
  			
  			// otherwise, check if the mode of the encryption is 'url'
  			} else if( findNoCase( 'url', arguments.mode ) ) {
  				
  				// using url encryption, check if useing BASE64 encoding on the URL key
  				if( findNoCase( 'BASE64', variables.encryptionEncoding1 ) ) {
  				
  					// using BASE64 encoding, URL decode the value
  					arguments.value = URLDecode( arguments.value );
  					// replace spaces with +
  					arguments.value = Replace( arguments.value, chr(32), '+', 'ALL' );
  					// decrypt with the first set of keys and repeatable algorithm
  					lastPass = Decrypt( arguments.value, variables.encryptionKey1, listFirst( variables.encryptionAlgorithm1, '/' ), variables.encryptionEncoding1 );
  				
  				// otherwise
  				} else {
  				
  					// not BASE64 encoded, decrypt with the first set of keys and algorithm
  					lastPass = Decrypt( arguments.value, variables.encryptionKey1, variables.encryptionAlgorithm1, variables.encryptionEncoding1 );
  				
  				// end checking if useing BASE64 encoding on the URL key	
  				}
  				
  			// otherwise, check if the mode of the encryption is 'master'
  			} else if( findNoCase( 'master', arguments.mode ) ) {
  			
  				// using master encryption, decrypt with the master key and second algorithm
  				onePass = Decrypt( arguments.value, variables.masterKey, 'BLOWFISH/CTR/PKCS5Padding', 'HEX' );
  				lastPass = Decrypt( onePass, variables.masterKey, 'AES/CBC/PKCS5Padding', 'HEX' );
  				
  			// otherwise, check if the mode of the encryption is 'form'
  			} else if( findNoCase( 'form', arguments.mode ) ) {
  			
  				// using form encryption, decrypt with the second set of keys and algorithm
  				lastPass = Decrypt( arguments.value, variables.encryptionKey2, variables.encryptionAlgorithm2, variables.encryptionEncoding2 );
  				
  			// otherwise, check if the mode of the encryption is 'cookie'
  			} else if( findNoCase( 'cookie', arguments.mode ) ) {
  			
  				// using cookie encryption, decrypt with the first set of keys and algorithm
  				lastPass = Decrypt( arguments.value, variables.encryptionKey3, variables.encryptionAlgorithm3, variables.encryptionEncoding3 );
  			
  			// end checking if the mode of the encryption is 'db', 'url', 'form' or 'cookie'	
  			}
  		
  		// end checking if the passed value has length
  		}
  
  
negative.code: 	public string function getMfaCode() {
  
  		// get a random auth code of a random length for multi-factor authentication
  		var mfaCode = left( uberHash( createUUID() & now(), 'MD5', randRange( 1000, 3000, 'SHA1PRNG' ) ), randRange( 4, 8, 'SHA1PRNG' ) );
  
  		// and return the mfa code
  		return mfaCode;
  