Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- AxisAngleRotation3D.cs
- Policy.cs
- GlobalItem.cs
- PeerCollaborationPermission.cs
- GetRecipientListRequest.cs
- MaskedTextBox.cs
- PropertyMapper.cs
- unitconverter.cs
- DependencyObjectPropertyDescriptor.cs
- ImageDrawing.cs
- BamlRecords.cs
- SiteMembershipCondition.cs
- SqlConnectionStringBuilder.cs
- Parameter.cs
- DbMetaDataColumnNames.cs
- DataSourceControlBuilder.cs
- XmlUtil.cs
- MasterPageParser.cs
- XmlLanguage.cs
- MenuItemCollectionEditorDialog.cs
- SubqueryTrackingVisitor.cs
- XmlSchemaInfo.cs
- ImportOptions.cs
- AppLevelCompilationSectionCache.cs
- Calendar.cs
- SynchronousReceiveElement.cs
- ConfigurationPermission.cs
- ViewGenerator.cs
- DataBindingExpressionBuilder.cs
- ColumnHeader.cs
- XpsSerializationException.cs
- ResourceContainer.cs
- ResumeStoryboard.cs
- QilExpression.cs
- ScriptModule.cs
- DbConnectionOptions.cs
- AlternateView.cs
- IEnumerable.cs
- GeneralTransformGroup.cs
- DesignBinding.cs
- SqlProfileProvider.cs
- SQLBinary.cs
- StringPropertyBuilder.cs
- FixedFindEngine.cs
- MsmqIntegrationSecurity.cs
- SafeEventLogWriteHandle.cs
- QilLiteral.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- PrimitiveCodeDomSerializer.cs
- AuthenticationServiceManager.cs
- coordinatorfactory.cs
- DataGridCellInfo.cs
- safemediahandle.cs
- TagPrefixCollection.cs
- CodePageUtils.cs
- ContractCodeDomInfo.cs
- TraceHwndHost.cs
- OleDbParameter.cs
- PropertyNames.cs
- COAUTHIDENTITY.cs
- Trace.cs
- HtmlButton.cs
- TreeNodeMouseHoverEvent.cs
- RoleManagerSection.cs
- XmlNamespaceDeclarationsAttribute.cs
- CodeDomSerializer.cs
- Marshal.cs
- RepeaterItemCollection.cs
- SessionStateSection.cs
- DtrList.cs
- AssemblyBuilder.cs
- NumberSubstitution.cs
- ScriptingProfileServiceSection.cs
- Environment.cs
- ProviderException.cs
- DynamicDataRoute.cs
- StaticResourceExtension.cs
- ParserHooks.cs
- CultureSpecificCharacterBufferRange.cs
- CultureTable.cs
- ComplexTypeEmitter.cs
- TagElement.cs
- MetadataItemEmitter.cs
- EngineSite.cs
- SchemaType.cs
- GridEntryCollection.cs
- XmlSchemaImport.cs
- TimeManager.cs
- _NetworkingPerfCounters.cs
- DataSourceConverter.cs
- StrokeNodeOperations.cs
- ConstraintConverter.cs
- FormViewRow.cs
- SinglePageViewer.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- PatternMatcher.cs
- DateTimeValueSerializer.cs
- CapiSafeHandles.cs
- DecoderReplacementFallback.cs
- WebPartsPersonalizationAuthorization.cs