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
- NullableFloatSumAggregationOperator.cs
- SrgsNameValueTag.cs
- PolyBezierSegmentFigureLogic.cs
- CharAnimationBase.cs
- EventEntry.cs
- ProxyHwnd.cs
- XXXInfos.cs
- SocketException.cs
- DataGridViewCellEventArgs.cs
- SingleObjectCollection.cs
- TcpDuplicateContext.cs
- SourceChangedEventArgs.cs
- Vector3D.cs
- SoundPlayer.cs
- PackWebResponse.cs
- SqlGatherProducedAliases.cs
- MobileErrorInfo.cs
- Decoder.cs
- _BaseOverlappedAsyncResult.cs
- EventLogPermission.cs
- sqlinternaltransaction.cs
- HttpCapabilitiesSectionHandler.cs
- BitmapPalette.cs
- EntityDataReader.cs
- SessionIDManager.cs
- SchemaType.cs
- StateWorkerRequest.cs
- TypeConverterHelper.cs
- SpoolingTaskBase.cs
- TypeConverterHelper.cs
- WsatTransactionInfo.cs
- ScrollableControlDesigner.cs
- cache.cs
- ListViewCancelEventArgs.cs
- FontNameConverter.cs
- AsymmetricKeyExchangeDeformatter.cs
- ObjectStateManagerMetadata.cs
- AutoGeneratedField.cs
- RowVisual.cs
- EdgeProfileValidation.cs
- NavigationPropertyEmitter.cs
- DispatcherFrame.cs
- Freezable.cs
- OleStrCAMarshaler.cs
- ProviderSettingsCollection.cs
- EncodingNLS.cs
- TreeNodeCollectionEditor.cs
- TreeView.cs
- TargetPerspective.cs
- Graphics.cs
- TagMapCollection.cs
- MimeParameterWriter.cs
- isolationinterop.cs
- Model3DGroup.cs
- TransactionValidationBehavior.cs
- EdmType.cs
- Tile.cs
- SystemWebExtensionsSectionGroup.cs
- HtmlWindow.cs
- ArgumentException.cs
- StartFileNameEditor.cs
- SqlClientWrapperSmiStreamChars.cs
- Crc32.cs
- EditorZoneDesigner.cs
- ProcessThread.cs
- SocketException.cs
- DeviceContext2.cs
- AssociationSet.cs
- DataGridViewToolTip.cs
- MetaType.cs
- Event.cs
- DbProviderServices.cs
- Point3D.cs
- FontCacheLogic.cs
- StateWorkerRequest.cs
- TextBoxRenderer.cs
- Types.cs
- EventWaitHandleSecurity.cs
- CustomErrorsSectionWrapper.cs
- AssociatedControlConverter.cs
- XmlSchemaValidationException.cs
- CompilerResults.cs
- TreeBuilder.cs
- TextServicesHost.cs
- HMACSHA1.cs
- PointLight.cs
- ServiceManagerHandle.cs
- Pen.cs
- ScaleTransform3D.cs
- LocalClientSecuritySettings.cs
- SendKeys.cs
- StreamInfo.cs
- MouseBinding.cs
- InheritablePropertyChangeInfo.cs
- URI.cs
- RemotingException.cs
- AssemblyAssociatedContentFileAttribute.cs
- ResourceKey.cs
- QuadraticEase.cs
- MessageQueueInstaller.cs