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
- MultilineStringConverter.cs
- StringFunctions.cs
- SerializationFieldInfo.cs
- DataShape.cs
- CreateUserWizardStep.cs
- ReaderContextStackData.cs
- Style.cs
- XPathPatternBuilder.cs
- MaskInputRejectedEventArgs.cs
- HtmlSelect.cs
- COAUTHINFO.cs
- ScrollViewer.cs
- DataServiceConfiguration.cs
- TakeQueryOptionExpression.cs
- StylusPlugin.cs
- DbConnectionStringCommon.cs
- Baml2006Reader.cs
- DbProviderFactoriesConfigurationHandler.cs
- ParameterBuilder.cs
- ExecutionEngineException.cs
- DataListCommandEventArgs.cs
- Currency.cs
- MimeMultiPart.cs
- VScrollBar.cs
- Triplet.cs
- HtmlTextArea.cs
- GacUtil.cs
- WebPartAuthorizationEventArgs.cs
- Activator.cs
- MorphHelpers.cs
- UserControlDesigner.cs
- ArithmeticException.cs
- HTTPAPI_VERSION.cs
- ExtentKey.cs
- CounterSetInstance.cs
- DefaultSettingsSection.cs
- ImportCatalogPart.cs
- WebPartPersonalization.cs
- TakeQueryOptionExpression.cs
- NameValueConfigurationElement.cs
- CheckBoxFlatAdapter.cs
- BasicCommandTreeVisitor.cs
- ServiceBuildProvider.cs
- IncrementalReadDecoders.cs
- DiscoveryServerProtocol.cs
- SafeArrayTypeMismatchException.cs
- NativeRightsManagementAPIsStructures.cs
- hwndwrapper.cs
- DataPagerCommandEventArgs.cs
- WindowsRichEditRange.cs
- AssemblyInfo.cs
- DashStyle.cs
- ConfigXmlWhitespace.cs
- XmlWhitespace.cs
- ListViewTableCell.cs
- InvokePattern.cs
- Matrix3D.cs
- MimeWriter.cs
- GPPOINT.cs
- _KerberosClient.cs
- XmlSchemaInferenceException.cs
- UnsafeCollabNativeMethods.cs
- ConsoleTraceListener.cs
- ClosureBinding.cs
- TagNameToTypeMapper.cs
- Expression.cs
- DeclarativeCatalogPart.cs
- ScrollItemProviderWrapper.cs
- UserPrincipalNameElement.cs
- Select.cs
- ServiceContractViewControl.cs
- TimeEnumHelper.cs
- SystemWebExtensionsSectionGroup.cs
- PathSegmentCollection.cs
- CellPartitioner.cs
- TakeQueryOptionExpression.cs
- XmlSerializableServices.cs
- TrackingProfileSerializer.cs
- TransactionException.cs
- TableLayoutCellPaintEventArgs.cs
- ObjectViewEntityCollectionData.cs
- WindowManager.cs
- WhitespaceRuleReader.cs
- BitmapMetadataEnumerator.cs
- RenderingEventArgs.cs
- BeginEvent.cs
- SingleAnimationBase.cs
- KeyBinding.cs
- DataTrigger.cs
- DefaultObjectMappingItemCollection.cs
- SqlMethodCallConverter.cs
- assemblycache.cs
- TypeListConverter.cs
- SmtpLoginAuthenticationModule.cs
- DataExpression.cs
- OuterGlowBitmapEffect.cs
- ObjectCloneHelper.cs
- SrgsToken.cs
- StorageRoot.cs
- DiagnosticsConfiguration.cs