Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Core / SecureStringHasher.cs / 1305376 / 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; } #if false // This is here only for debugging of hashing issues public SecureStringHasher( int hashCodeRandomizer ) { this.hashCodeRandomizer = hashCodeRandomizer; } #endif 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; } #if false // This is here only for debugging of hashing issues public SecureStringHasher( int hashCodeRandomizer ) { this.hashCodeRandomizer = hashCodeRandomizer; } #endif 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
- SqlDataSourceSelectingEventArgs.cs
- HyperLinkStyle.cs
- BinaryMessageEncodingElement.cs
- SymLanguageType.cs
- Encoding.cs
- DataFormat.cs
- UnsafeNativeMethods.cs
- RuntimeConfigLKG.cs
- xml.cs
- BamlReader.cs
- RichTextBoxConstants.cs
- MenuScrollingVisibilityConverter.cs
- ICspAsymmetricAlgorithm.cs
- CallbackValidator.cs
- PreparingEnlistment.cs
- CodeCatchClauseCollection.cs
- FileChangesMonitor.cs
- FileSystemInfo.cs
- FontTypeConverter.cs
- HtmlInputText.cs
- TemplateControlParser.cs
- ServerReliableChannelBinder.cs
- DuplicateWaitObjectException.cs
- ListControlBoundActionList.cs
- DATA_BLOB.cs
- WebPartManager.cs
- MailDefinition.cs
- OletxVolatileEnlistment.cs
- IItemProperties.cs
- GcHandle.cs
- Rijndael.cs
- Help.cs
- SchemaCollectionCompiler.cs
- DetailsViewUpdatedEventArgs.cs
- XmlToDatasetMap.cs
- SQLByteStorage.cs
- MessageDesigner.cs
- CqlErrorHelper.cs
- RestHandlerFactory.cs
- LinearKeyFrames.cs
- MissingMemberException.cs
- _IPv6Address.cs
- ToolStripRendererSwitcher.cs
- DataConnectionHelper.cs
- PaperSource.cs
- _SslSessionsCache.cs
- XmlSiteMapProvider.cs
- TextReturnReader.cs
- UnsafeNativeMethods.cs
- IndexedString.cs
- XmlSchemaAnnotation.cs
- ApplicationServiceManager.cs
- FrameworkContentElement.cs
- CommandManager.cs
- Adorner.cs
- WizardStepBase.cs
- AutoCompleteStringCollection.cs
- FormCollection.cs
- TiffBitmapDecoder.cs
- SmiTypedGetterSetter.cs
- HttpAsyncResult.cs
- EventWaitHandle.cs
- WebPartDescription.cs
- DataGridViewToolTip.cs
- DoubleAnimation.cs
- ClaimTypes.cs
- Send.cs
- WSSecureConversationDec2005.cs
- StaticExtension.cs
- FilterableData.cs
- CookieParameter.cs
- _ConnectionGroup.cs
- TextEditorLists.cs
- WebPartHelpVerb.cs
- SettingsPropertyNotFoundException.cs
- GeometryModel3D.cs
- ConfigurationSectionCollection.cs
- QueryPageSettingsEventArgs.cs
- COM2ColorConverter.cs
- SqlDataSourceQueryEditorForm.cs
- PerformanceCounterPermissionEntry.cs
- ViewStateAttachedPropertyFeature.cs
- BulletedListEventArgs.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- formatstringdialog.cs
- XmlSerializableServices.cs
- _SslStream.cs
- Axis.cs
- ExpressionBuilder.cs
- ConstraintConverter.cs
- ColumnResizeUndoUnit.cs
- TextBoxView.cs
- StorageComplexTypeMapping.cs
- XmlChoiceIdentifierAttribute.cs
- CacheDependency.cs
- ThemeableAttribute.cs
- System.Data_BID.cs
- BasicKeyConstraint.cs
- Misc.cs
- UInt64.cs