Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / Xml / System / Xml / Core / SecureStringHasher.cs / 2 / SecureStringHasher.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
namespace System.Xml {
// SecureStringHasher is a hash code provider for strings. The hash codes calculation starts with a seed (hasCodeRandomizer) which is usually
// different for each instance of SecureStringHasher. Since the hash code depend on the seed, the chance of hashtable DoS attack in case when
// someone passes in lots of strings that hash to the same hash code is greatly reduced.
// The SecureStringHasher implements IEqualityComparer for strings and therefore can be used in generic IDictionary.
internal class SecureStringHasher : IEqualityComparer {
int hashCodeRandomizer;
public SecureStringHasher() {
this.hashCodeRandomizer = Environment.TickCount;
}
public SecureStringHasher( int hashCodeRandomizer ) {
this.hashCodeRandomizer = hashCodeRandomizer;
}
public int Compare( String x, String y ) {
return String.Compare(x, y, StringComparison.Ordinal);
}
public bool Equals( String x, String y ) {
return String.Equals( x, y, StringComparison.Ordinal );
}
public int GetHashCode( String key ) {
int hashCode = hashCodeRandomizer;
// use key.Length to eliminate the rangecheck
for ( int i = 0; i < key.Length; i++ ) {
hashCode += ( hashCode << 7 ) ^ key[i];
}
// mix it a bit more
hashCode -= hashCode >> 17;
hashCode -= hashCode >> 11;
hashCode -= hashCode >> 5;
return hashCode;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CompilationLock.cs
- WindowsFormsHelpers.cs
- StructuredTypeEmitter.cs
- StatusBarItem.cs
- SqlProfileProvider.cs
- TypeTypeConverter.cs
- CustomAssemblyResolver.cs
- TransportContext.cs
- DataList.cs
- Themes.cs
- AutomationIdentifierGuids.cs
- PreviewKeyDownEventArgs.cs
- XmlSecureResolver.cs
- DesignerListAdapter.cs
- AnyAllSearchOperator.cs
- VectorCollection.cs
- CompModSwitches.cs
- Vector3DAnimationBase.cs
- NameNode.cs
- File.cs
- CompilerResults.cs
- StrokeNodeEnumerator.cs
- HandlerFactoryWrapper.cs
- SrgsItemList.cs
- lengthconverter.cs
- DesignTimeTemplateParser.cs
- XmlQueryRuntime.cs
- IResourceProvider.cs
- ModelTreeEnumerator.cs
- TaskCanceledException.cs
- ExtendedPropertyInfo.cs
- Animatable.cs
- GPStream.cs
- safemediahandle.cs
- Optimizer.cs
- SystemColors.cs
- ListBase.cs
- QilLoop.cs
- EndpointDiscoveryMetadataCD1.cs
- BufferedGraphicsContext.cs
- X500Name.cs
- IdleTimeoutMonitor.cs
- CollectionAdapters.cs
- ImageConverter.cs
- NetWebProxyFinder.cs
- PasswordPropertyTextAttribute.cs
- HashLookup.cs
- StructuralObject.cs
- ChameleonKey.cs
- QuaternionAnimationBase.cs
- EntityDataSourceChangedEventArgs.cs
- RequiredAttributeAttribute.cs
- ButtonChrome.cs
- CacheForPrimitiveTypes.cs
- TTSVoice.cs
- Transform.cs
- ColumnHeaderConverter.cs
- VectorCollectionValueSerializer.cs
- MessageQueueEnumerator.cs
- Int32EqualityComparer.cs
- ListViewTableRow.cs
- ResourcePart.cs
- PolyQuadraticBezierSegment.cs
- ShaderRenderModeValidation.cs
- ExceptionUtil.cs
- DataSourceXmlClassAttribute.cs
- SatelliteContractVersionAttribute.cs
- XPathNodePointer.cs
- PreservationFileReader.cs
- SchemaDeclBase.cs
- ProxyWebPart.cs
- ResourceSet.cs
- TimeStampChecker.cs
- PageRanges.cs
- TrackingStringDictionary.cs
- HttpRuntime.cs
- TypographyProperties.cs
- Lasso.cs
- UserControlParser.cs
- MenuBase.cs
- QilStrConcatenator.cs
- X509SecurityToken.cs
- LinqToSqlWrapper.cs
- SurrogateChar.cs
- Internal.cs
- SizeAnimationUsingKeyFrames.cs
- EventPropertyMap.cs
- StatusStrip.cs
- ToolboxItemWrapper.cs
- DataControlLinkButton.cs
- EventSinkActivity.cs
- RenderDataDrawingContext.cs
- WebBrowserContainer.cs
- CodeTypeDeclaration.cs
- TraceProvider.cs
- IApplicationTrustManager.cs
- ObjRef.cs
- SymmetricAlgorithm.cs
- CSharpCodeProvider.cs
- UriWriter.cs