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
- ExtensionSimplifierMarkupObject.cs
- InvokerUtil.cs
- DrawingContextDrawingContextWalker.cs
- WebBrowser.cs
- GridViewColumnHeaderAutomationPeer.cs
- BitmapScalingModeValidation.cs
- BrowserCapabilitiesCodeGenerator.cs
- BrowserCapabilitiesCodeGenerator.cs
- EntityDataSourceQueryBuilder.cs
- ContextMarshalException.cs
- WebServiceData.cs
- Renderer.cs
- CheckPair.cs
- ComponentSerializationService.cs
- StackSpiller.cs
- SuspendDesigner.cs
- OpenFileDialog.cs
- Vector3DCollection.cs
- BitmapSizeOptions.cs
- MetabaseReader.cs
- keycontainerpermission.cs
- GeneralTransform.cs
- PageStatePersister.cs
- NameValueCollection.cs
- MouseEvent.cs
- DBCSCodePageEncoding.cs
- Point3DCollection.cs
- WebMethodAttribute.cs
- Item.cs
- SystemDiagnosticsSection.cs
- OdbcErrorCollection.cs
- _NativeSSPI.cs
- OleDbPermission.cs
- XmlElementList.cs
- MarkupExtensionParser.cs
- ProxySimple.cs
- EncoderParameters.cs
- EngineSite.cs
- AssemblyBuilderData.cs
- ListParagraph.cs
- QilSortKey.cs
- SelectionRange.cs
- SingleStorage.cs
- ParameterCollection.cs
- StaticFileHandler.cs
- Brush.cs
- PrinterSettings.cs
- _TimerThread.cs
- MD5.cs
- DocumentReference.cs
- QilInvokeEarlyBound.cs
- TagPrefixInfo.cs
- BasePattern.cs
- HtmlTitle.cs
- ModelPropertyCollectionImpl.cs
- WebPartConnectionsEventArgs.cs
- SmiMetaDataProperty.cs
- SqlDataAdapter.cs
- BamlResourceContent.cs
- WindowsGraphics.cs
- ReadOnlyHierarchicalDataSourceView.cs
- HttpCookie.cs
- HttpEncoder.cs
- XPathExpr.cs
- Cursor.cs
- VBIdentifierDesigner.xaml.cs
- ParseNumbers.cs
- SynchronizationContext.cs
- CellTreeNodeVisitors.cs
- HtmlElementErrorEventArgs.cs
- XhtmlBasicFormAdapter.cs
- WindowProviderWrapper.cs
- KeyedHashAlgorithm.cs
- ModifyActivitiesPropertyDescriptor.cs
- TrustManagerMoreInformation.cs
- Timer.cs
- FontClient.cs
- NameValueConfigurationCollection.cs
- Control.cs
- LambdaCompiler.Expressions.cs
- AppearanceEditorPart.cs
- ResourceExpression.cs
- _SslSessionsCache.cs
- PlatformCulture.cs
- TypeSystem.cs
- UnsafeNativeMethodsPenimc.cs
- TypeInformation.cs
- XPathNodeHelper.cs
- XmlDataCollection.cs
- ProfileSection.cs
- DateTime.cs
- ExpressionBuilder.cs
- SqlClientWrapperSmiStreamChars.cs
- OleDbPermission.cs
- ForEachAction.cs
- BoundField.cs
- DataSvcMapFileSerializer.cs
- HuffCodec.cs
- ImageAnimator.cs
- FileChangesMonitor.cs