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
- Geometry3D.cs
- DragDeltaEventArgs.cs
- CodeCatchClause.cs
- UriSection.cs
- LinkClickEvent.cs
- PropertyTabAttribute.cs
- LateBoundChannelParameterCollection.cs
- DebugHandleTracker.cs
- CodeBlockBuilder.cs
- ConfigurationManagerHelperFactory.cs
- TypeUnloadedException.cs
- KerberosReceiverSecurityToken.cs
- DataGridToolTip.cs
- HtmlMeta.cs
- ContentPosition.cs
- SmtpTransport.cs
- TreeNodeEventArgs.cs
- BindingCompleteEventArgs.cs
- DataControlReferenceCollection.cs
- ButtonFlatAdapter.cs
- RoleServiceManager.cs
- DispatchWrapper.cs
- StringFormat.cs
- ArrayTypeMismatchException.cs
- TypeConverterAttribute.cs
- ToolStripSeparatorRenderEventArgs.cs
- ResourceCategoryAttribute.cs
- SafeHandles.cs
- Font.cs
- _SslState.cs
- HttpListenerContext.cs
- FrameworkContextData.cs
- GradientSpreadMethodValidation.cs
- PropertyEmitter.cs
- Queue.cs
- EventWaitHandleSecurity.cs
- SharedConnectionListener.cs
- ClientSettingsSection.cs
- CollectionChangeEventArgs.cs
- ActivityExecutionFilter.cs
- ListenerSingletonConnectionReader.cs
- Pair.cs
- ServicesUtilities.cs
- NotImplementedException.cs
- HtmlInputControl.cs
- PartialTrustHelpers.cs
- NullableConverter.cs
- TextBox.cs
- SecurityUtils.cs
- Brush.cs
- DataSourceHelper.cs
- TargetConverter.cs
- Parsers.cs
- EncryptionUtility.cs
- UnaryNode.cs
- ImageIndexEditor.cs
- ParserStreamGeometryContext.cs
- SqlDeflator.cs
- DateTimeUtil.cs
- EventRouteFactory.cs
- AppDomainAttributes.cs
- XmlSchemaSimpleContent.cs
- SqlClientPermission.cs
- FilteredDataSetHelper.cs
- GeometryDrawing.cs
- InteropExecutor.cs
- DocumentApplicationJournalEntry.cs
- FloaterParaClient.cs
- GetWinFXPath.cs
- LockCookie.cs
- CodeTypeDelegate.cs
- CallbackException.cs
- ResourcesBuildProvider.cs
- PointCollectionConverter.cs
- OpCodes.cs
- ObjectAssociationEndMapping.cs
- SAPIEngineTypes.cs
- RootBuilder.cs
- ContractNamespaceAttribute.cs
- XmlSchemaInclude.cs
- IIS7ConfigurationLoader.cs
- ZipIOExtraFieldPaddingElement.cs
- URLMembershipCondition.cs
- TextSelectionHighlightLayer.cs
- StructuredType.cs
- _SSPIWrapper.cs
- DataGridSortCommandEventArgs.cs
- LogicalTreeHelper.cs
- WindowManager.cs
- SessionStateSection.cs
- ExpressionEditor.cs
- Point3DValueSerializer.cs
- SQLBinary.cs
- OdbcUtils.cs
- Control.cs
- AlphabeticalEnumConverter.cs
- ImageMapEventArgs.cs
- MetadataReference.cs
- SafeNativeMemoryHandle.cs
- DbSourceCommand.cs