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
- MinimizableAttributeTypeConverter.cs
- SortedDictionary.cs
- DocumentOrderQuery.cs
- BufferedWebEventProvider.cs
- WindowsRegion.cs
- ScrollChrome.cs
- SqlConnectionManager.cs
- String.cs
- RegexGroupCollection.cs
- TextEditorCharacters.cs
- ListBindableAttribute.cs
- RowToFieldTransformer.cs
- Vector3DIndependentAnimationStorage.cs
- SynchronizationFilter.cs
- ActivityDesignerLayoutSerializers.cs
- OptimalBreakSession.cs
- ComponentManagerBroker.cs
- OdbcConnectionPoolProviderInfo.cs
- Polyline.cs
- ListControl.cs
- LinqMaximalSubtreeNominator.cs
- FormatStringEditor.cs
- RotationValidation.cs
- CacheAxisQuery.cs
- ColorConverter.cs
- EncryptedData.cs
- ParserOptions.cs
- DataGridViewColumnTypePicker.cs
- PostBackOptions.cs
- ColumnTypeConverter.cs
- GPRECT.cs
- LineInfo.cs
- WebConfigurationHostFileChange.cs
- TextElementAutomationPeer.cs
- isolationinterop.cs
- XmlImplementation.cs
- Geometry.cs
- DecimalKeyFrameCollection.cs
- PageBreakRecord.cs
- PersonalizablePropertyEntry.cs
- TextUtf8RawTextWriter.cs
- SortAction.cs
- ProcessHostServerConfig.cs
- DataSourceXmlSerializer.cs
- WriteStateInfoBase.cs
- XmlSchemaImport.cs
- References.cs
- formatter.cs
- ConnectionsZoneAutoFormat.cs
- MediaPlayerState.cs
- TablePattern.cs
- ScaleTransform.cs
- DependencyPropertyKey.cs
- LocalizationParserHooks.cs
- Package.cs
- RegionData.cs
- StrongNameIdentityPermission.cs
- NotCondition.cs
- TabPanel.cs
- ComponentEditorForm.cs
- Dictionary.cs
- QilPatternFactory.cs
- MachineKeyConverter.cs
- SharingService.cs
- SerialErrors.cs
- AssemblyCacheEntry.cs
- HMACRIPEMD160.cs
- AutomationPropertyInfo.cs
- SoapExtensionTypeElementCollection.cs
- BuildProvider.cs
- OleDbReferenceCollection.cs
- __TransparentProxy.cs
- AuthenticationModulesSection.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- PopOutPanel.cs
- StylusShape.cs
- ReferentialConstraint.cs
- PaintEvent.cs
- RuntimeResourceSet.cs
- SafeFindHandle.cs
- PolicyImporterElementCollection.cs
- XmlWriterTraceListener.cs
- Workspace.cs
- EventBuilder.cs
- DataColumnMapping.cs
- WebServiceData.cs
- SpanIndex.cs
- ReferenceTypeElement.cs
- HttpCapabilitiesEvaluator.cs
- PointLight.cs
- ImageField.cs
- WindowsStreamSecurityBindingElement.cs
- Compiler.cs
- BinaryMethodMessage.cs
- CodePageEncoding.cs
- BitmapEffectGroup.cs
- HyperLinkColumn.cs
- SafeNativeMethods.cs
- Light.cs
- SystemKeyConverter.cs