Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / Core / SecureStringHasher.cs / 1 / 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
- HotSpotCollection.cs
- InteropBitmapSource.cs
- DataViewManager.cs
- FontStretchConverter.cs
- TrackingExtract.cs
- WindowsPen.cs
- TextUtf8RawTextWriter.cs
- StoreItemCollection.cs
- ModelItemKeyValuePair.cs
- MouseActionConverter.cs
- ElasticEase.cs
- Content.cs
- XPathDocumentNavigator.cs
- WebPartManagerDesigner.cs
- PaintEvent.cs
- AppModelKnownContentFactory.cs
- CommunicationObjectAbortedException.cs
- HuffmanTree.cs
- ServiceElementCollection.cs
- Exceptions.cs
- StringAnimationUsingKeyFrames.cs
- ProviderCommandInfoUtils.cs
- TreeNodeConverter.cs
- XPathNavigator.cs
- FormViewInsertEventArgs.cs
- SeekStoryboard.cs
- OleDbParameter.cs
- SetStoryboardSpeedRatio.cs
- PixelFormat.cs
- PersonalizablePropertyEntry.cs
- StaticExtension.cs
- mactripleDES.cs
- NotImplementedException.cs
- MailAddressCollection.cs
- KnownIds.cs
- ControlIdConverter.cs
- ListViewUpdateEventArgs.cs
- StaticFileHandler.cs
- UInt16Storage.cs
- OleDbPermission.cs
- ToolStripAdornerWindowService.cs
- XmlILCommand.cs
- DbDataAdapter.cs
- GridViewRowEventArgs.cs
- ProgressBarBrushConverter.cs
- BCLDebug.cs
- Panel.cs
- Models.cs
- ListViewSelectEventArgs.cs
- StorageConditionPropertyMapping.cs
- MetafileHeaderEmf.cs
- AlternateView.cs
- LayoutEditorPart.cs
- HandleRef.cs
- XmlSchemaSet.cs
- HttpHandlerAction.cs
- LinkConverter.cs
- Mapping.cs
- Zone.cs
- OutputCacheProfile.cs
- NativeMethods.cs
- InvalidAsynchronousStateException.cs
- TreeNodeStyleCollection.cs
- XmlnsCache.cs
- MetadataItemEmitter.cs
- Panel.cs
- DiscoveryService.cs
- BuildProvider.cs
- Activity.cs
- Keyboard.cs
- InstanceDataCollectionCollection.cs
- WindowVisualStateTracker.cs
- XmlWriter.cs
- CollectionBase.cs
- TabItem.cs
- DropAnimation.xaml.cs
- HttpCachePolicyBase.cs
- XmlWriterSettings.cs
- MulticastOption.cs
- StateWorkerRequest.cs
- StorageInfo.cs
- TabControlCancelEvent.cs
- MsmqAppDomainProtocolHandler.cs
- ArrangedElementCollection.cs
- PropertyTabAttribute.cs
- Variable.cs
- XPathDocumentIterator.cs
- ToolBarOverflowPanel.cs
- EmptyCollection.cs
- HtmlControlPersistable.cs
- MsmqIntegrationBindingElement.cs
- PropertyEmitterBase.cs
- ParseElement.cs
- FormatSettings.cs
- SafeNativeMemoryHandle.cs
- ByteStreamMessageEncoderFactory.cs
- XmlTypeMapping.cs
- EventHandlerList.cs
- PieceNameHelper.cs
- DataColumnChangeEvent.cs