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
- DebugView.cs
- MgmtResManager.cs
- DeviceSpecificChoice.cs
- MsmqOutputSessionChannel.cs
- StrokeCollection.cs
- DataView.cs
- InputLangChangeEvent.cs
- DeclaredTypeElement.cs
- ObjectContextServiceProvider.cs
- TreeWalkHelper.cs
- TargetConverter.cs
- ScriptingRoleServiceSection.cs
- Thickness.cs
- ConfigurationValues.cs
- WebPartAuthorizationEventArgs.cs
- OpenCollectionAsyncResult.cs
- DesignerForm.cs
- WebBrowserEvent.cs
- CollaborationHelperFunctions.cs
- LicenseContext.cs
- SmtpFailedRecipientsException.cs
- ObservableCollectionDefaultValueFactory.cs
- TcpClientCredentialType.cs
- StretchValidation.cs
- SerializationException.cs
- ClientProxyGenerator.cs
- ToolStripDesignerAvailabilityAttribute.cs
- EntityDataSourceValidationException.cs
- PeerToPeerException.cs
- XmlSchemaAttributeGroup.cs
- App.cs
- ZipIOLocalFileHeader.cs
- NetTcpSecurity.cs
- EventLogLink.cs
- GroupStyle.cs
- FormsAuthenticationCredentials.cs
- Block.cs
- ToolboxComponentsCreatingEventArgs.cs
- ConvertBinder.cs
- AccessorTable.cs
- PieceNameHelper.cs
- EllipticalNodeOperations.cs
- XmlWriterSettings.cs
- WebBrowserBase.cs
- ZipArchive.cs
- SerializationException.cs
- ClientRolePrincipal.cs
- Rss20FeedFormatter.cs
- PrivilegedConfigurationManager.cs
- ContentPlaceHolder.cs
- WindowsToolbarItemAsMenuItem.cs
- ForeignConstraint.cs
- HttpWebResponse.cs
- CompiledXpathExpr.cs
- ApplicationDirectory.cs
- ActivityCodeDomSerializationManager.cs
- DataServiceQueryOfT.cs
- XmlQualifiedNameTest.cs
- DetailsViewUpdateEventArgs.cs
- XmlUTF8TextReader.cs
- ExpressionBuilder.cs
- PerformanceCounters.cs
- CalculatedColumn.cs
- MediaPlayerState.cs
- UpdateManifestForBrowserApplication.cs
- SchemaImporterExtensionsSection.cs
- InternalBufferOverflowException.cs
- _SslStream.cs
- ToolboxControl.cs
- BrowserCapabilitiesCodeGenerator.cs
- InvokeProviderWrapper.cs
- RemotingSurrogateSelector.cs
- SqlRemoveConstantOrderBy.cs
- ToolStripRenderEventArgs.cs
- ScrollItemPatternIdentifiers.cs
- PermissionRequestEvidence.cs
- TextFormatterHost.cs
- GZipStream.cs
- AttachInfo.cs
- DataSourceControlBuilder.cs
- XmlAttributeProperties.cs
- DataGridViewBand.cs
- Matrix3DValueSerializer.cs
- MergeLocalizationDirectives.cs
- QfeChecker.cs
- ResourcesGenerator.cs
- WindowsListViewSubItem.cs
- DataSourceConverter.cs
- DataSourceControl.cs
- ReflectTypeDescriptionProvider.cs
- SQLInt16.cs
- ICspAsymmetricAlgorithm.cs
- SQLDouble.cs
- AddInDeploymentState.cs
- NativeMethodsOther.cs
- TitleStyle.cs
- Int32Animation.cs
- MiniConstructorInfo.cs
- UpdateDelegates.Generated.cs
- OciEnlistContext.cs