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
- InfiniteIntConverter.cs
- XPathParser.cs
- ToolStripProgressBar.cs
- ScrollBarAutomationPeer.cs
- TabPanel.cs
- TextInfo.cs
- TimeSpanSecondsConverter.cs
- WebPartDisplayModeEventArgs.cs
- BamlCollectionHolder.cs
- GlyphInfoList.cs
- PseudoWebRequest.cs
- WebPartDescriptionCollection.cs
- X509Chain.cs
- XmlDictionaryString.cs
- TypefaceMap.cs
- ClearCollection.cs
- M3DUtil.cs
- Path.cs
- ToolStripOverflow.cs
- BitSet.cs
- NotCondition.cs
- HtmlSelect.cs
- HttpListenerRequestUriBuilder.cs
- IDictionary.cs
- RedirectionProxy.cs
- RequestQueue.cs
- ZipIOLocalFileBlock.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- DefaultClaimSet.cs
- DiscoveryMessageSequence.cs
- SqlInfoMessageEvent.cs
- UiaCoreApi.cs
- ConfigurationLockCollection.cs
- InplaceBitmapMetadataWriter.cs
- HttpWebRequestElement.cs
- SettingsPropertyValue.cs
- RoutedEventConverter.cs
- ComponentCommands.cs
- AffineTransform3D.cs
- _Win32.cs
- XPSSignatureDefinition.cs
- MLangCodePageEncoding.cs
- Operand.cs
- TypeSystemProvider.cs
- DesignDataSource.cs
- MailHeaderInfo.cs
- CopyOfAction.cs
- SoapSchemaMember.cs
- ToolBarButtonClickEvent.cs
- XPathNavigatorException.cs
- ReadWriteObjectLock.cs
- ExtensionFile.cs
- OleDbWrapper.cs
- CustomAttributeFormatException.cs
- XmlMembersMapping.cs
- DataColumn.cs
- TypeDependencyAttribute.cs
- PriorityChain.cs
- XmlArrayItemAttributes.cs
- DataGridViewLinkCell.cs
- VersionPair.cs
- DesignerOptionService.cs
- DataKey.cs
- ErrorWebPart.cs
- HMACRIPEMD160.cs
- ToolZoneDesigner.cs
- StateInitializationDesigner.cs
- Matrix3DValueSerializer.cs
- MessageFormatterConverter.cs
- ListBoxChrome.cs
- webeventbuffer.cs
- BoundPropertyEntry.cs
- GroupByExpressionRewriter.cs
- PeerCollaboration.cs
- XhtmlBasicSelectionListAdapter.cs
- HtmlButton.cs
- Utility.cs
- PropertyCollection.cs
- SiteMapDataSourceView.cs
- AssemblyInfo.cs
- OrderByQueryOptionExpression.cs
- SolidColorBrush.cs
- ScrollPattern.cs
- XamlDesignerSerializationManager.cs
- TextAdaptor.cs
- CodeTypeParameterCollection.cs
- TraceLevelStore.cs
- TableColumnCollection.cs
- GroupItemAutomationPeer.cs
- TaiwanCalendar.cs
- ClrProviderManifest.cs
- unsafeIndexingFilterStream.cs
- ItemContainerGenerator.cs
- Stackframe.cs
- StringAnimationBase.cs
- SmtpTransport.cs
- HttpModuleActionCollection.cs
- SqlNamer.cs
- ReadOnlyHierarchicalDataSourceView.cs
- HyperLinkField.cs