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
- StrokeFIndices.cs
- XmlAttributes.cs
- DataServices.cs
- BrowserCapabilitiesFactoryBase.cs
- PatternMatcher.cs
- PersonalizationStateInfo.cs
- ApplicationContext.cs
- WebPartDisplayMode.cs
- TraceHandler.cs
- OptimalBreakSession.cs
- ApplicationHost.cs
- codemethodreferenceexpression.cs
- Sql8ExpressionRewriter.cs
- ActivationServices.cs
- ReliableSessionElement.cs
- TemplateBindingExpression.cs
- XmlSchemaSimpleTypeList.cs
- MemoryStream.cs
- HttpModule.cs
- MultiBindingExpression.cs
- ByteRangeDownloader.cs
- CodeArrayCreateExpression.cs
- SizeAnimationUsingKeyFrames.cs
- BrowserCapabilitiesFactoryBase.cs
- ConnectorDragDropGlyph.cs
- BaseEntityWrapper.cs
- StreamResourceInfo.cs
- Main.cs
- HtmlElement.cs
- BinaryFormatterWriter.cs
- CheckBoxList.cs
- XmlObjectSerializerContext.cs
- SessionIDManager.cs
- DebugInfoGenerator.cs
- DebugView.cs
- PhysicalFontFamily.cs
- ConnectionProviderAttribute.cs
- TransformedBitmap.cs
- BitmapCodecInfo.cs
- CodeParameterDeclarationExpression.cs
- BamlTreeNode.cs
- CellConstantDomain.cs
- Link.cs
- ArcSegment.cs
- PagesSection.cs
- AccessDataSource.cs
- PrintingPermissionAttribute.cs
- MetadataCacheItem.cs
- LayoutTableCell.cs
- TableLayoutStyle.cs
- ToolboxItemAttribute.cs
- DataServiceHost.cs
- BitmapDownload.cs
- Tokenizer.cs
- MenuRenderer.cs
- SystemPens.cs
- SchemaNamespaceManager.cs
- ProcessModelSection.cs
- MetadataArtifactLoaderCompositeResource.cs
- HttpRequest.cs
- ParserStack.cs
- DataGridToolTip.cs
- QualifiedCellIdBoolean.cs
- documentsequencetextcontainer.cs
- NullableFloatMinMaxAggregationOperator.cs
- XmlSchemaSubstitutionGroup.cs
- Vector3DAnimationBase.cs
- StandardBindingCollectionElement.cs
- StaticExtension.cs
- ValidatingReaderNodeData.cs
- CheckBoxList.cs
- AbandonedMutexException.cs
- DataServiceQueryOfT.cs
- counter.cs
- MultiBindingExpression.cs
- DiscardableAttribute.cs
- _RequestCacheProtocol.cs
- DateTimeUtil.cs
- WebPartEditVerb.cs
- URLString.cs
- Reference.cs
- PrivilegeNotHeldException.cs
- ObjectDataSource.cs
- DataMemberConverter.cs
- PerfCounters.cs
- KnownTypesHelper.cs
- EpmContentDeSerializer.cs
- FontStyleConverter.cs
- DataContext.cs
- DetailsViewUpdateEventArgs.cs
- mediaeventshelper.cs
- ValidationRule.cs
- BinaryFormatterWriter.cs
- FormsAuthenticationUser.cs
- DispatchWrapper.cs
- SqlNodeTypeOperators.cs
- TransactionFilter.cs
- WebEvents.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- CorrelationManager.cs