Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Core / SecureStringHasher.cs / 1305376 / 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; } #if false // This is here only for debugging of hashing issues public SecureStringHasher( int hashCodeRandomizer ) { this.hashCodeRandomizer = hashCodeRandomizer; } #endif 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
- ServiceObjectContainer.cs
- SessionStateUtil.cs
- KeyToListMap.cs
- SynchronousChannelMergeEnumerator.cs
- WebPartZoneBase.cs
- DummyDataSource.cs
- HttpRuntime.cs
- OverflowException.cs
- XmlRootAttribute.cs
- SynchronizationFilter.cs
- RowToParametersTransformer.cs
- CachedTypeface.cs
- ImagingCache.cs
- DebugInfoExpression.cs
- NavigatorOutput.cs
- ConversionValidationRule.cs
- TableCell.cs
- MonthChangedEventArgs.cs
- RequestContextBase.cs
- RelationshipEndMember.cs
- DiscoveryUtility.cs
- MetricEntry.cs
- StandardTransformFactory.cs
- AssemblyAssociatedContentFileAttribute.cs
- XPathAncestorQuery.cs
- TriggerBase.cs
- ThicknessKeyFrameCollection.cs
- ScrollChangedEventArgs.cs
- DataView.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- OdbcParameterCollection.cs
- InitializingNewItemEventArgs.cs
- ClientSettingsSection.cs
- HttpHandlerAction.cs
- Win32SafeHandles.cs
- HtmlShim.cs
- DependencyPropertyConverter.cs
- ProfileProvider.cs
- QilBinary.cs
- CommandBindingCollection.cs
- WindowsStatusBar.cs
- StringConverter.cs
- RuleValidation.cs
- XmlCodeExporter.cs
- ScopeCompiler.cs
- ParserOptions.cs
- Model3DGroup.cs
- DetailsViewInsertedEventArgs.cs
- Root.cs
- JavaScriptString.cs
- ScriptResourceHandler.cs
- CodeObjectCreateExpression.cs
- SqlWebEventProvider.cs
- HttpConfigurationContext.cs
- Fault.cs
- RetrieveVirtualItemEventArgs.cs
- SafeRightsManagementSessionHandle.cs
- _FtpControlStream.cs
- CustomValidator.cs
- OdbcPermission.cs
- SqlConnection.cs
- CompoundFileStorageReference.cs
- DataGridViewElement.cs
- PersonalizationEntry.cs
- _SSPIWrapper.cs
- RightsManagementSuppressedStream.cs
- SessionIDManager.cs
- SqlNodeAnnotations.cs
- Literal.cs
- HostedElements.cs
- ColorContext.cs
- XmlObjectSerializerReadContextComplex.cs
- TemplateColumn.cs
- ReflectionTypeLoadException.cs
- _SSPISessionCache.cs
- LinqTreeNodeEvaluator.cs
- AnyReturnReader.cs
- TableColumnCollectionInternal.cs
- DataGridPageChangedEventArgs.cs
- Vector3DCollection.cs
- SrgsOneOf.cs
- HtmlListAdapter.cs
- EntityCommandExecutionException.cs
- SignerInfo.cs
- StreamGeometry.cs
- NavigatorInput.cs
- JoinTreeNode.cs
- ConfigurationStrings.cs
- MetadataException.cs
- WrappedKeySecurityTokenParameters.cs
- Predicate.cs
- ComponentConverter.cs
- METAHEADER.cs
- BindingValueChangedEventArgs.cs
- ParameterToken.cs
- SparseMemoryStream.cs
- LocationUpdates.cs
- StreamGeometry.cs
- HexParser.cs
- SqlErrorCollection.cs