Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- AnnotationResourceCollection.cs
- WindowsFont.cs
- infer.cs
- BasicHttpMessageSecurity.cs
- ToolStripDropDownItem.cs
- Int16.cs
- HyperLinkField.cs
- ComponentEditorPage.cs
- WebBrowserNavigatingEventHandler.cs
- DataObject.cs
- ClientScriptItem.cs
- ActiveXMessageFormatter.cs
- Interfaces.cs
- XmlSchemaAppInfo.cs
- SqlReorderer.cs
- BuildDependencySet.cs
- datacache.cs
- EntryIndex.cs
- XmlLoader.cs
- ConfigXmlWhitespace.cs
- CompositeKey.cs
- LoginCancelEventArgs.cs
- HtmlShimManager.cs
- WebEventTraceProvider.cs
- RegexStringValidatorAttribute.cs
- SafeThemeHandle.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- TreeNodeBinding.cs
- DoubleLinkListEnumerator.cs
- FormDocumentDesigner.cs
- OptionalColumn.cs
- InlineCollection.cs
- ChildrenQuery.cs
- ContextInformation.cs
- HuffmanTree.cs
- HtmlInputHidden.cs
- AlternateViewCollection.cs
- DirectionalLight.cs
- SpnEndpointIdentity.cs
- MediaElementAutomationPeer.cs
- HasCopySemanticsAttribute.cs
- CharAnimationUsingKeyFrames.cs
- PropertyEntry.cs
- AuthStoreRoleProvider.cs
- SequenceQuery.cs
- BaseTemplateBuildProvider.cs
- ServiceElement.cs
- InvalidCommandTreeException.cs
- DefaultValueAttribute.cs
- SchemaType.cs
- Stopwatch.cs
- CallTemplateAction.cs
- ImagingCache.cs
- SecurityUtils.cs
- XmlFormatMapping.cs
- SystemTcpStatistics.cs
- DataTableNewRowEvent.cs
- ISAPIApplicationHost.cs
- MdImport.cs
- ProcessStartInfo.cs
- webproxy.cs
- AsyncOperation.cs
- _SSPIWrapper.cs
- ImmutablePropertyDescriptorGridEntry.cs
- AuthStoreRoleProvider.cs
- OleDbConnectionFactory.cs
- ZipIOLocalFileDataDescriptor.cs
- ObjectPersistData.cs
- ClientBuildManager.cs
- FreezableCollection.cs
- IntPtr.cs
- ObjectToIdCache.cs
- NumericUpDownAcceleration.cs
- MergeFilterQuery.cs
- FormatterConverter.cs
- SecurityTokenSerializer.cs
- securitymgrsite.cs
- BuildManagerHost.cs
- PropertyValueChangedEvent.cs
- TypeInfo.cs
- QuaternionRotation3D.cs
- AllMembershipCondition.cs
- SineEase.cs
- MarkupObject.cs
- ColorDialog.cs
- BigInt.cs
- XmlKeywords.cs
- DashStyles.cs
- WebPartCollection.cs
- FormsAuthenticationUserCollection.cs
- CompModSwitches.cs
- StackBuilderSink.cs
- WaitHandle.cs
- WorkflowEnvironment.cs
- ControlType.cs
- FontStyles.cs
- CrossContextChannel.cs
- M3DUtil.cs
- ConnectionManagementElement.cs
- XmlSchemaAttributeGroupRef.cs