Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- MimeObjectFactory.cs
- PathTooLongException.cs
- TargetInvocationException.cs
- WriterOutput.cs
- IsolatedStorageFilePermission.cs
- ShaderEffect.cs
- SecurityUtils.cs
- FilterFactory.cs
- CertificateReferenceElement.cs
- cryptoapiTransform.cs
- XmlToDatasetMap.cs
- AlternateView.cs
- ObjectTokenCategory.cs
- OdbcRowUpdatingEvent.cs
- DateTimeHelper.cs
- AddressHeaderCollectionElement.cs
- AdCreatedEventArgs.cs
- ThemeInfoAttribute.cs
- AggregatePushdown.cs
- XamlTreeBuilderBamlRecordWriter.cs
- TextEditorDragDrop.cs
- RequestTimeoutManager.cs
- HostProtectionException.cs
- DBParameter.cs
- HelpProvider.cs
- sqlstateclientmanager.cs
- RadioButtonStandardAdapter.cs
- UnaryNode.cs
- TransformProviderWrapper.cs
- Grammar.cs
- ExpressionStringBuilder.cs
- MenuAutomationPeer.cs
- GroupQuery.cs
- CodeDomSerializerException.cs
- X509Utils.cs
- ConnectionPoint.cs
- BamlReader.cs
- ListBoxItemAutomationPeer.cs
- ConstraintStruct.cs
- InkCanvasInnerCanvas.cs
- FeatureSupport.cs
- ProviderUtil.cs
- XmlDictionaryReaderQuotasElement.cs
- PenLineCapValidation.cs
- XsltException.cs
- entitydatasourceentitysetnameconverter.cs
- FileDialog.cs
- ReversePositionQuery.cs
- DataGridViewTextBoxEditingControl.cs
- DesignOnlyAttribute.cs
- OrderPreservingPipeliningMergeHelper.cs
- ItemCollectionEditor.cs
- SystemIcmpV4Statistics.cs
- CodeArrayIndexerExpression.cs
- MultiView.cs
- ManagedFilter.cs
- RedBlackList.cs
- MasterPage.cs
- FrameworkTemplate.cs
- RuleSettings.cs
- TrackingWorkflowEventArgs.cs
- WSHttpBindingElement.cs
- _SslState.cs
- OverflowException.cs
- CopyCodeAction.cs
- UIElementPropertyUndoUnit.cs
- TrailingSpaceComparer.cs
- TypeDelegator.cs
- Interlocked.cs
- RelatedPropertyManager.cs
- EntityDataSourceDesignerHelper.cs
- DataConnectionHelper.cs
- CustomAttributeFormatException.cs
- GacUtil.cs
- SQLInt64Storage.cs
- OdbcError.cs
- EntryWrittenEventArgs.cs
- WindowsToolbar.cs
- DataDocumentXPathNavigator.cs
- FlowLayoutPanelDesigner.cs
- QueryCursorEventArgs.cs
- ProfileGroupSettingsCollection.cs
- SoundPlayerAction.cs
- sortedlist.cs
- DocumentViewerBase.cs
- EventEntry.cs
- DependsOnAttribute.cs
- GeneralTransformCollection.cs
- SourceFileBuildProvider.cs
- TextCompositionEventArgs.cs
- DnsPermission.cs
- LayoutDump.cs
- ModelPerspective.cs
- StandardToolWindows.cs
- AppDomainFactory.cs
- ReflectTypeDescriptionProvider.cs
- ExceptionHandlersDesigner.cs
- FacetDescriptionElement.cs
- Single.cs