Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- isolationinterop.cs
- HtmlInputButton.cs
- BindingWorker.cs
- SystemDiagnosticsSection.cs
- Point3DKeyFrameCollection.cs
- X509KeyIdentifierClauseType.cs
- TextContainerHelper.cs
- SiteMapNodeItem.cs
- PartBasedPackageProperties.cs
- invalidudtexception.cs
- Margins.cs
- FigureParaClient.cs
- LassoHelper.cs
- Table.cs
- SqlRemoveConstantOrderBy.cs
- Button.cs
- SecureUICommand.cs
- LineGeometry.cs
- TcpClientChannel.cs
- Main.cs
- MetadataArtifactLoaderResource.cs
- PassportAuthenticationModule.cs
- Base64Encoding.cs
- MailSettingsSection.cs
- ListenerElementsCollection.cs
- ContextDataSource.cs
- RoleManagerEventArgs.cs
- HtmlForm.cs
- BidPrivateBase.cs
- TemplateControl.cs
- CompositeKey.cs
- AuthenticationModuleElementCollection.cs
- DocumentApplication.cs
- DefaultWorkflowLoaderService.cs
- ControlBuilderAttribute.cs
- XmlSchemaChoice.cs
- KeyValueSerializer.cs
- FromRequest.cs
- XPathScanner.cs
- TextCollapsingProperties.cs
- LogPolicy.cs
- SiteMapNodeCollection.cs
- ResourceDescriptionAttribute.cs
- CompilationPass2TaskInternal.cs
- NonClientArea.cs
- CodeTypeOfExpression.cs
- AssemblyLoader.cs
- MethodBuilder.cs
- OleDbDataReader.cs
- ScrollProviderWrapper.cs
- SafeArrayTypeMismatchException.cs
- TransformerConfigurationWizardBase.cs
- SignatureResourceHelper.cs
- PageRequestManager.cs
- Menu.cs
- UInt32Converter.cs
- EventProviderWriter.cs
- EntityProviderServices.cs
- SiteMapProvider.cs
- RegexStringValidator.cs
- Ticks.cs
- HwndMouseInputProvider.cs
- XpsFilter.cs
- StylusPlugInCollection.cs
- DBDataPermissionAttribute.cs
- Geometry3D.cs
- RadioButtonRenderer.cs
- BaseTemplateParser.cs
- UpdateCompiler.cs
- Process.cs
- BasicDesignerLoader.cs
- PropertyIDSet.cs
- XPathSingletonIterator.cs
- LicenseProviderAttribute.cs
- DetailsViewDeletedEventArgs.cs
- ListViewUpdateEventArgs.cs
- WebBrowserProgressChangedEventHandler.cs
- IssuerInformation.cs
- WmlListAdapter.cs
- EdgeProfileValidation.cs
- ScalarConstant.cs
- PropertyMap.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- DataList.cs
- ReversePositionQuery.cs
- ArgumentOutOfRangeException.cs
- OdbcCommandBuilder.cs
- SiteMapDataSourceView.cs
- login.cs
- CatalogPart.cs
- UIServiceHelper.cs
- PropertyChangingEventArgs.cs
- NamedPermissionSet.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- WebPartActionVerb.cs
- ObjectDataSourceView.cs
- QueueProcessor.cs
- WindowsNonControl.cs
- EntityClassGenerator.cs
- EntityKey.cs