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
- FilteredReadOnlyMetadataCollection.cs
- TransformPattern.cs
- ActivityTrace.cs
- DataServiceExpressionVisitor.cs
- CodeMemberField.cs
- SplineQuaternionKeyFrame.cs
- MimeTypePropertyAttribute.cs
- log.cs
- UnmanagedHandle.cs
- NetworkInformationPermission.cs
- DuplicateWaitObjectException.cs
- StylusPointPropertyUnit.cs
- XmlUtf8RawTextWriter.cs
- FullTextBreakpoint.cs
- SqlUtil.cs
- SoapSchemaExporter.cs
- XmlDocumentSchema.cs
- IdentifierCollection.cs
- AssociationType.cs
- TextTreeTextElementNode.cs
- ScrollProperties.cs
- PageAsyncTask.cs
- ProtectedConfiguration.cs
- documentsequencetextview.cs
- SessionStateItemCollection.cs
- securitycriticaldata.cs
- TextCompositionManager.cs
- CustomAttributeFormatException.cs
- XmlSchemaAttribute.cs
- ContainerTracking.cs
- ToolStripRenderEventArgs.cs
- ResourceProviderFactory.cs
- OperationFormatUse.cs
- ListControlBoundActionList.cs
- XMLSchema.cs
- OdbcStatementHandle.cs
- ReservationNotFoundException.cs
- SqlConnectionString.cs
- IDReferencePropertyAttribute.cs
- DependencyPropertyValueSerializer.cs
- WindowsListBox.cs
- CodeEntryPointMethod.cs
- DesignTimeType.cs
- ContentHostHelper.cs
- DecimalConstantAttribute.cs
- SafeRightsManagementSessionHandle.cs
- HandleCollector.cs
- ByteConverter.cs
- DrawingAttributes.cs
- ContextProperty.cs
- Label.cs
- ButtonField.cs
- EntityDesignerBuildProvider.cs
- Margins.cs
- OptimalBreakSession.cs
- SizeKeyFrameCollection.cs
- Span.cs
- DataGridViewRowCollection.cs
- DispatcherFrame.cs
- ThreadInterruptedException.cs
- cryptoapiTransform.cs
- AssemblyCollection.cs
- DescriptionAttribute.cs
- DrawingCollection.cs
- Viewport3DVisual.cs
- PointLight.cs
- IResourceProvider.cs
- UpdatePanelTriggerCollection.cs
- __ComObject.cs
- control.ime.cs
- FacetDescription.cs
- TextWriterTraceListener.cs
- DataIdProcessor.cs
- AnonymousIdentificationSection.cs
- ValidatorCollection.cs
- DataGridTableCollection.cs
- DecoderReplacementFallback.cs
- LogReserveAndAppendState.cs
- PerfService.cs
- ManipulationStartingEventArgs.cs
- cookiecontainer.cs
- CodeNamespaceImport.cs
- FtpWebRequest.cs
- TemplateEditingVerb.cs
- TreeIterators.cs
- QilLiteral.cs
- ConditionalDesigner.cs
- Merger.cs
- SemanticResolver.cs
- Debugger.cs
- SoapElementAttribute.cs
- TypedTableBase.cs
- TypeUnloadedException.cs
- KeyMatchBuilder.cs
- CompoundFileDeflateTransform.cs
- ImportContext.cs
- BindingManagerDataErrorEventArgs.cs
- ObjectSecurity.cs
- DistributedTransactionPermission.cs
- ViewGenerator.cs