System.Web.Handlers.ScriptResourceHandler.AssemblyResourceLoader.GetStringHash C# (CSharp) Method

GetStringHash() static private method

static private GetStringHash ( KeyedHashAlgorithm kha, string str ) : string
kha System.Security.Cryptography.KeyedHashAlgorithm
str string
return string
		static string GetStringHash (KeyedHashAlgorithm kha, string str)
		{
			if (String.IsNullOrEmpty (str))
				return String.Empty;

			string result;
			try {
				_stringHashCacheLock.EnterUpgradeableReadLock ();
				if (stringHashCache.TryGetValue (str, out result))
					return result;

				try {
					_stringHashCacheLock.EnterWriteLock ();
					if (stringHashCache.TryGetValue (str, out result))
						return result;
					
					result = Convert.ToBase64String (kha.ComputeHash (Encoding.UTF8.GetBytes (str)));
					stringHashCache.Add (str, result);
				} finally {
					_stringHashCacheLock.ExitWriteLock ();
				}
			} finally {
				_stringHashCacheLock.ExitUpgradeableReadLock ();
			}
			
			return result;
		}