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
- OdbcParameterCollection.cs
- OdbcError.cs
- _AutoWebProxyScriptWrapper.cs
- Attributes.cs
- EntityDesignPluralizationHandler.cs
- PeerInvitationResponse.cs
- XPathSelectionIterator.cs
- InputReport.cs
- DataGridViewSortCompareEventArgs.cs
- MimeParameter.cs
- SQLCharsStorage.cs
- UnknownBitmapEncoder.cs
- HtmlInputFile.cs
- ManualWorkflowSchedulerService.cs
- CommonRemoteMemoryBlock.cs
- PresentationTraceSources.cs
- CmsUtils.cs
- XmlResolver.cs
- SemanticBasicElement.cs
- UrlPath.cs
- CodeExporter.cs
- FormDocumentDesigner.cs
- FactoryId.cs
- ProfileSettings.cs
- FrameSecurityDescriptor.cs
- __ConsoleStream.cs
- ChangeBlockUndoRecord.cs
- MD5CryptoServiceProvider.cs
- Rectangle.cs
- ReliableReplySessionChannel.cs
- IndexOutOfRangeException.cs
- ProcessHostConfigUtils.cs
- ExtendedPropertyCollection.cs
- DetailsViewPageEventArgs.cs
- CancellationHandlerDesigner.cs
- StringFreezingAttribute.cs
- UndirectedGraph.cs
- Vector3DAnimationUsingKeyFrames.cs
- BoundField.cs
- XmlWellformedWriter.cs
- DbReferenceCollection.cs
- FormClosingEvent.cs
- HyperLink.cs
- SerializationHelper.cs
- RelationshipType.cs
- FileRecordSequenceCompletedAsyncResult.cs
- InputScopeConverter.cs
- CacheAxisQuery.cs
- DetailsViewCommandEventArgs.cs
- MarkupExtensionParser.cs
- GeneralTransformGroup.cs
- RegistrationProxy.cs
- DownloadProgressEventArgs.cs
- SyndicationSerializer.cs
- Geometry3D.cs
- GeneralTransform3DGroup.cs
- SpecialTypeDataContract.cs
- ListViewHitTestInfo.cs
- DocumentApplicationDocumentViewer.cs
- _SafeNetHandles.cs
- OutputWindow.cs
- URLIdentityPermission.cs
- TypefaceMetricsCache.cs
- DataRowChangeEvent.cs
- wgx_render.cs
- DataGridTextBox.cs
- Positioning.cs
- ClusterRegistryConfigurationProvider.cs
- MarginCollapsingState.cs
- ApplicationSecurityManager.cs
- Pkcs7Recipient.cs
- BindingExpression.cs
- SessionStateContainer.cs
- GridViewRow.cs
- WebZone.cs
- RevocationPoint.cs
- SocketInformation.cs
- TextLine.cs
- SqlClientPermission.cs
- XPathMessageFilterElementCollection.cs
- ProtocolState.cs
- DesignTimeParseData.cs
- AccessControlList.cs
- MediaContext.cs
- PersonalizablePropertyEntry.cs
- FocusChangedEventArgs.cs
- TimeSpanValidatorAttribute.cs
- MetadataCacheItem.cs
- WindowsListBox.cs
- StringComparer.cs
- Boolean.cs
- WebPartManagerInternals.cs
- Parser.cs
- MachineKey.cs
- EntityDataSourceContainerNameItem.cs
- WebPartExportVerb.cs
- WebPartDescriptionCollection.cs
- IdentityModelDictionary.cs
- XmlSignatureManifest.cs
- ListBindingHelper.cs