Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- DomainUpDown.cs
- StrongNameUtility.cs
- webclient.cs
- TdsParserHelperClasses.cs
- ImportContext.cs
- ReferenceConverter.cs
- FormCollection.cs
- ActivityExecutionContext.cs
- MessageHeaders.cs
- DataContractSerializerElement.cs
- PropVariant.cs
- Cursor.cs
- SQLBytesStorage.cs
- Menu.cs
- ComEventsMethod.cs
- MediaElement.cs
- BulletedList.cs
- DataBindEngine.cs
- PocoPropertyAccessorStrategy.cs
- ColorTransform.cs
- _HTTPDateParse.cs
- SqlDuplicator.cs
- WorkflowRuntimeElement.cs
- AllMembershipCondition.cs
- SqlExpressionNullability.cs
- DetailsViewPagerRow.cs
- XmlCodeExporter.cs
- EntityWrapper.cs
- MatrixValueSerializer.cs
- formatter.cs
- XmlSerializationGeneratedCode.cs
- CodeStatement.cs
- GenericNameHandler.cs
- TcpConnectionPool.cs
- LogExtent.cs
- DataGridViewTextBoxCell.cs
- ItemCollection.cs
- NonBatchDirectoryCompiler.cs
- TreeNodeCollection.cs
- _HelperAsyncResults.cs
- Quaternion.cs
- WmlValidationSummaryAdapter.cs
- XamlDesignerSerializationManager.cs
- BStrWrapper.cs
- Events.cs
- NetWebProxyFinder.cs
- SiteMapDataSource.cs
- DataMemberConverter.cs
- PagerSettings.cs
- CommandConverter.cs
- SerializationTrace.cs
- Run.cs
- GridViewDeleteEventArgs.cs
- DbgCompiler.cs
- XmlAttributeProperties.cs
- XmlDocumentSerializer.cs
- FormClosingEvent.cs
- Stroke2.cs
- AutomationPropertyInfo.cs
- FileChangesMonitor.cs
- WebPartZoneCollection.cs
- ElementAction.cs
- UnauthorizedAccessException.cs
- DBAsyncResult.cs
- ComponentSerializationService.cs
- BufferedReadStream.cs
- SmtpMail.cs
- PropertyBuilder.cs
- StdValidatorsAndConverters.cs
- XmlResolver.cs
- DataListItemCollection.cs
- LogExtent.cs
- RestHandler.cs
- UmAlQuraCalendar.cs
- UnsafeNativeMethods.cs
- RpcCryptoRequest.cs
- FormViewUpdatedEventArgs.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- KeyedCollection.cs
- OdbcError.cs
- ActivityDesignerResources.cs
- BitmapEffectRenderDataResource.cs
- WebUtil.cs
- CodeSubDirectoriesCollection.cs
- SmtpSection.cs
- RegistryPermission.cs
- NumberFunctions.cs
- CommandLineParser.cs
- FormViewCommandEventArgs.cs
- FileSystemInfo.cs
- DataTemplate.cs
- VerificationAttribute.cs
- DesignerDataColumn.cs
- MessageSmuggler.cs
- SchemaImporterExtensionElement.cs
- ContentType.cs
- X509ThumbprintKeyIdentifierClause.cs
- CommandPlan.cs
- PathFigureCollection.cs
- ChangeToolStripParentVerb.cs