Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // //[....] //----------------------------------------------------------------------------- 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Condition.cs
- RemotingException.cs
- CompositeFontFamily.cs
- VerticalAlignConverter.cs
- BitmapImage.cs
- BrushValueSerializer.cs
- TabItem.cs
- FacetDescription.cs
- DynamicRenderer.cs
- ResourceAttributes.cs
- WinFormsComponentEditor.cs
- InputReport.cs
- XamlSerializer.cs
- DefaultObjectMappingItemCollection.cs
- FixedTextSelectionProcessor.cs
- StylusPointCollection.cs
- XXXInfos.cs
- DataSet.cs
- COM2PropertyDescriptor.cs
- HierarchicalDataBoundControl.cs
- ParameterModifier.cs
- XmlCodeExporter.cs
- XdrBuilder.cs
- TemplateControlBuildProvider.cs
- DoWhile.cs
- BitHelper.cs
- Command.cs
- StopStoryboard.cs
- PolyQuadraticBezierSegment.cs
- PlainXmlWriter.cs
- ErrorFormatterPage.cs
- SingletonInstanceContextProvider.cs
- TagPrefixInfo.cs
- DropSource.cs
- PackageRelationshipCollection.cs
- VarInfo.cs
- PlainXmlDeserializer.cs
- DataStreamFromComStream.cs
- XmlMapping.cs
- NonParentingControl.cs
- FileVersion.cs
- SelectionPattern.cs
- TextAdaptor.cs
- ScrollChrome.cs
- dtdvalidator.cs
- SiteMapNodeCollection.cs
- RegisteredScript.cs
- OleDbCommandBuilder.cs
- Validator.cs
- IntPtr.cs
- WriteableOnDemandStream.cs
- TextServicesLoader.cs
- InvokeHandlers.cs
- TextDecorations.cs
- XmlEnumAttribute.cs
- RandomNumberGenerator.cs
- ScrollEvent.cs
- XmlSchemaDatatype.cs
- MaskPropertyEditor.cs
- ListMarkerSourceInfo.cs
- Container.cs
- DataGridPageChangedEventArgs.cs
- RichTextBox.cs
- WebDescriptionAttribute.cs
- LinearKeyFrames.cs
- DefaultPrintController.cs
- PersonalizationProviderCollection.cs
- AutoCompleteStringCollection.cs
- TextElement.cs
- DataGridViewLinkColumn.cs
- AddInControllerImpl.cs
- WhiteSpaceTrimStringConverter.cs
- SelectorAutomationPeer.cs
- TreeNodeCollection.cs
- WebPartTransformerCollection.cs
- Debug.cs
- AssemblyAttributes.cs
- SymDocumentType.cs
- EntityContainer.cs
- MdImport.cs
- SemanticAnalyzer.cs
- NaturalLanguageHyphenator.cs
- GenericQueueSurrogate.cs
- ADMembershipProvider.cs
- DefaultTextStore.cs
- filewebresponse.cs
- ShapingWorkspace.cs
- BitmapEffectInputConnector.cs
- Control.cs
- CodeSnippetCompileUnit.cs
- SQLDecimalStorage.cs
- ApplicationContext.cs
- NamespaceMapping.cs
- SHA1CryptoServiceProvider.cs
- SqlTransaction.cs
- SqlParameterCollection.cs
- PipelineComponent.cs
- DefaultPropertiesToSend.cs
- UnlockInstanceCommand.cs