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
- RepeatBehavior.cs
- Subset.cs
- XmlSchemaSimpleType.cs
- TCPListener.cs
- RoleGroup.cs
- UnsafeNativeMethods.cs
- XPathNavigator.cs
- MenuAutomationPeer.cs
- HtmlShimManager.cs
- SEHException.cs
- SeverityFilter.cs
- SafeRightsManagementHandle.cs
- PersonalizationStateInfo.cs
- ConfigErrorGlyph.cs
- MyContact.cs
- ActionNotSupportedException.cs
- RequestNavigateEventArgs.cs
- GraphicsContext.cs
- ConfigUtil.cs
- TypeListConverter.cs
- FontStretches.cs
- ExpressionLexer.cs
- LZCodec.cs
- UtilityExtension.cs
- CodeChecksumPragma.cs
- AppSettingsSection.cs
- ContainerTracking.cs
- TerminatorSinks.cs
- FormsAuthenticationTicket.cs
- MulticastIPAddressInformationCollection.cs
- Int32CollectionConverter.cs
- StaticContext.cs
- CompoundFileDeflateTransform.cs
- MemberMaps.cs
- SafePointer.cs
- Point3DCollectionValueSerializer.cs
- RegexCharClass.cs
- TransformPatternIdentifiers.cs
- VisualBrush.cs
- SetStateDesigner.cs
- ProvidePropertyAttribute.cs
- QueryOperator.cs
- ControlHelper.cs
- LoginUtil.cs
- NonValidatingSecurityTokenAuthenticator.cs
- WebControl.cs
- FrameworkReadOnlyPropertyMetadata.cs
- XamlToRtfWriter.cs
- DiscoveryOperationContextExtension.cs
- DynamicMethod.cs
- PointUtil.cs
- XmlText.cs
- FontWeights.cs
- FlowLayout.cs
- StickyNoteAnnotations.cs
- HtmlTableRowCollection.cs
- SymbolUsageManager.cs
- ProxyElement.cs
- VectorValueSerializer.cs
- ServerIdentity.cs
- MetadataItemCollectionFactory.cs
- WebPartEditVerb.cs
- CmsInterop.cs
- ObjectDataSourceView.cs
- ListenerAdapter.cs
- XmlValueConverter.cs
- DataGridViewCheckBoxCell.cs
- GeneralTransform3DTo2DTo3D.cs
- WebControl.cs
- ObjectDataSourceEventArgs.cs
- OleDbWrapper.cs
- ProcessInfo.cs
- CodeSubDirectory.cs
- ProviderManager.cs
- FieldNameLookup.cs
- DbConnectionPoolIdentity.cs
- XmlTextAttribute.cs
- CollectionChangedEventManager.cs
- TrustLevelCollection.cs
- SchemaInfo.cs
- KeyedHashAlgorithm.cs
- Dump.cs
- DecimalKeyFrameCollection.cs
- TouchesCapturedWithinProperty.cs
- DataTableCollection.cs
- ValidatingReaderNodeData.cs
- SemanticBasicElement.cs
- LOSFormatter.cs
- SiteMap.cs
- WindowsFormsLinkLabel.cs
- WpfWebRequestHelper.cs
- PanelStyle.cs
- bidPrivateBase.cs
- FacetValues.cs
- GlyphTypeface.cs
- DeclarationUpdate.cs
- EditorPartCollection.cs
- SoapFormatter.cs
- DefaultProxySection.cs
- ConstructorArgumentAttribute.cs