Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- PerformanceCounterCategory.cs
- ButtonColumn.cs
- ObjectViewListener.cs
- SoapSchemaImporter.cs
- GeneralTransformGroup.cs
- DocumentViewerBase.cs
- NGCSerializationManagerAsync.cs
- MailDefinition.cs
- XmlElementList.cs
- WebEventCodes.cs
- XmlDocumentType.cs
- WebPartUtil.cs
- sapiproxy.cs
- FormConverter.cs
- ComplexObject.cs
- SqlBuilder.cs
- ClientCultureInfo.cs
- Token.cs
- ActiveXHelper.cs
- SqlClientPermission.cs
- ServiceProviders.cs
- EventItfInfo.cs
- _IPv6Address.cs
- OracleBFile.cs
- ClientTargetCollection.cs
- GcSettings.cs
- _IPv4Address.cs
- SmiEventSink_Default.cs
- PropertyDescriptorCollection.cs
- ResourceDefaultValueAttribute.cs
- GACIdentityPermission.cs
- DebugView.cs
- OverflowException.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- PropertyItemInternal.cs
- ClientScriptManager.cs
- QueryContext.cs
- InlinedAggregationOperator.cs
- DesignerActionUIService.cs
- NativeWindow.cs
- NameTable.cs
- MultiTouchSystemGestureLogic.cs
- ObjectItemAssemblyLoader.cs
- AQNBuilder.cs
- PolyLineSegmentFigureLogic.cs
- ConstraintConverter.cs
- SiteMapDesignerDataSourceView.cs
- TransactionalPackage.cs
- ImageCodecInfo.cs
- mediaclock.cs
- UserValidatedEventArgs.cs
- FixedPage.cs
- AsymmetricSecurityProtocolFactory.cs
- InvalidProgramException.cs
- DesignRelationCollection.cs
- DrawingImage.cs
- OleCmdHelper.cs
- InputReportEventArgs.cs
- HiddenFieldPageStatePersister.cs
- DataGridParentRows.cs
- TemplateXamlParser.cs
- InputLangChangeRequestEvent.cs
- SoapMessage.cs
- DBSqlParser.cs
- HostedBindingBehavior.cs
- DataGridViewCellLinkedList.cs
- ExternalException.cs
- ADMembershipUser.cs
- SqlUDTStorage.cs
- DesignerSerializationManager.cs
- SByteStorage.cs
- COM2ExtendedBrowsingHandler.cs
- EdmMember.cs
- RoleGroupCollection.cs
- BuildManager.cs
- PropertyGridCommands.cs
- WaitForChangedResult.cs
- GenericArgumentsUpdater.cs
- TextBounds.cs
- ControlPropertyNameConverter.cs
- CqlBlock.cs
- _AutoWebProxyScriptHelper.cs
- TextElement.cs
- ProcessModule.cs
- WebPartTransformer.cs
- NullReferenceException.cs
- AdornerHitTestResult.cs
- XamlInt32CollectionSerializer.cs
- GenericsInstances.cs
- XamlFigureLengthSerializer.cs
- ListViewTableRow.cs
- HierarchicalDataBoundControl.cs
- TypeConverterHelper.cs
- XsltArgumentList.cs
- InvalidOperationException.cs
- odbcmetadatacollectionnames.cs
- ContentValidator.cs
- CompilerGeneratedAttribute.cs
- DrawingContext.cs
- IProvider.cs