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: 	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;
  
negative.code: 		var lastPass = '';
  		
  		// check if the passed value has length
  		if( arguments.value.len() ) {
  
  			// switch on the encryption mode
  			switch( arguments.mode ) {
  
  				// database
  				case 'db':			
  					// using database encryption, encrypt with the first set of keys and algorithm
  					onepass = encrypt( arguments.value, variables.encryptionKey1, variables.encryptionAlgorithm1, variables.encryptionEncoding1 );
  					// and again with the second set of keys and algorithm
  					twopass = encrypt( onepass, variables.encryptionKey2, variables.encryptionAlgorithm2, variables.encryptionEncoding2 );
  					// and again with the third set of keys and algorithm
  					lastPass = encrypt( twopass, variables.encryptionKey3, variables.encryptionAlgorithm3, variables.encryptionEncoding3 );
  				break;
  
  				// repeatable database
  				case 'repeatable':				
  					// using repeatable database encryption, encrypt with the first set of keys and algorithm
  					onepass = encrypt( arguments.value, variables.encryptionKey1, listFirst( variables.encryptionAlgorithm1, '/' ), variables.encryptionEncoding1 );
  					// and again with the second set of keys and algorithm
  					twopass = encrypt( onepass, variables.encryptionKey2,  listFirst( variables.encryptionAlgorithm2, '/' ), variables.encryptionEncoding2 );
  					// and again with the third set of keys and algorithm
  					lastPass = encrypt( twopass, variables.encryptionKey3,  listFirst( variables.encryptionAlgorithm3, '/' ), variables.encryptionEncoding3);
  				break;
  
  				// master
  				case 'master':
  					// using master encryption, encrypt with the master key
  					onePass = encrypt( arguments.value, variables.masterKey, 'AES/CBC/PKCS5Padding', 'HEX' );
  					lastPass = encrypt( onePass, variables.masterKey, 'BLOWFISH/CTR/PKCS5Padding', 'HEX' );
  				break;
  
  				// URL
  				case 'url':				
  					// using url encryption, check if using BASE64 encoding on the URL key
  					if( findNoCase( 'BASE64', variables.encryptionEncoding1 ) ) {
  					
  						// we are, encrypt with the first set of keys and repeatable algorithm
  						lastPass = encrypt( arguments.value, variables.encryptionKey1, listFirst( variables.encryptionAlgorithm1, '/' ), variables.encryptionEncoding1);
  						// using BASE64 encoding, URL encode the value
  						lastPass = URLEncodedFormat( lastPass );
  					
  					// otherwise
  					} else {
  					
  						// not BASE64 encoded, encrypt with the first set of keys and algorithm
  						lastPass = encrypt( arguments.value, variables.encryptionKey1, variables.encryptionAlgorithm1, variables.encryptionEncoding1 );
  					
  					// end checking if useing BASE64 encoding on the URL key	
  					}
  				break;
  
  				// FORM
  				case 'form':		
  					// using form encryption, encrypt with the second set of keys and algorithm
  					lastPass = encrypt( arguments.value, variables.encryptionKey2, variables.encryptionAlgorithm2, variables.encryptionEncoding2 );
  				break;
  
  				// COOKIE
  				case 'cookie':
  					// using cookie encryption, encrypt with the first set of keys and algorithm
  					lastPass = encrypt( arguments.value, variables.encryptionKey3, variables.encryptionAlgorithm3, variables.encryptionEncoding3 );
  				break;
  
  				// default
  				default:
  					return lastPass;
  				break;
  
  			}
  
  		// end checking if the passed value has length
  		}
  		
  