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
- XmlNodeChangedEventArgs.cs
- KeyNotFoundException.cs
- DetailsViewInsertEventArgs.cs
- ValidationError.cs
- SafeNativeMemoryHandle.cs
- ListViewPagedDataSource.cs
- IpcClientChannel.cs
- DurableServiceAttribute.cs
- URLAttribute.cs
- ConfigDefinitionUpdates.cs
- WCFBuildProvider.cs
- Vector3DValueSerializer.cs
- SessionStateUtil.cs
- PackageProperties.cs
- SafeNativeMethodsMilCoreApi.cs
- ThemeDirectoryCompiler.cs
- NativeCppClassAttribute.cs
- EnumerableRowCollectionExtensions.cs
- BookmarkList.cs
- SemanticResultValue.cs
- ErrorTableItemStyle.cs
- DropSourceBehavior.cs
- PagePropertiesChangingEventArgs.cs
- XmlChildEnumerator.cs
- ApplicationHost.cs
- ConfigurationSectionGroup.cs
- FixedTextContainer.cs
- ContextMenu.cs
- NamedPermissionSet.cs
- BevelBitmapEffect.cs
- ProbeMatchesCD1.cs
- XmlSchemaObjectCollection.cs
- ConstructorNeedsTagAttribute.cs
- OracleTransaction.cs
- ResXResourceReader.cs
- IpcClientManager.cs
- DataViewManagerListItemTypeDescriptor.cs
- SafeNativeMethods.cs
- RolePrincipal.cs
- HyperLink.cs
- MethodImplAttribute.cs
- BinaryVersion.cs
- Context.cs
- ForeignKeyConstraint.cs
- GridItemPattern.cs
- WindowsFont.cs
- DatagramAdapter.cs
- GridViewColumnHeaderAutomationPeer.cs
- XmlDocumentSurrogate.cs
- XmlSchemaAttributeGroupRef.cs
- IOThreadTimer.cs
- SiteMapSection.cs
- TypographyProperties.cs
- ProfileEventArgs.cs
- ButtonBase.cs
- LocalValueEnumerator.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- Registry.cs
- ZoneIdentityPermission.cs
- ReadWriteSpinLock.cs
- CodeTypeReferenceExpression.cs
- GlyphingCache.cs
- XmlReflectionImporter.cs
- TypeElement.cs
- HttpHandlersSection.cs
- InplaceBitmapMetadataWriter.cs
- LineBreakRecord.cs
- ParsedAttributeCollection.cs
- PlacementWorkspace.cs
- SmtpClient.cs
- QilTargetType.cs
- DataGridViewHitTestInfo.cs
- ToolStripSystemRenderer.cs
- OracleColumn.cs
- DataListCommandEventArgs.cs
- XmlDownloadManager.cs
- RedirectionProxy.cs
- ByteFacetDescriptionElement.cs
- DocumentXPathNavigator.cs
- ByteAnimationBase.cs
- DirectoryObjectSecurity.cs
- ContentPlaceHolder.cs
- BindUriHelper.cs
- HostVisual.cs
- StreamWithDictionary.cs
- ObjectContextServiceProvider.cs
- DateTimeFormatInfo.cs
- AuthenticationConfig.cs
- ToolZone.cs
- OleDbConnectionFactory.cs
- GridViewUpdatedEventArgs.cs
- RelAssertionDirectKeyIdentifierClause.cs
- ColorContextHelper.cs
- AttributeCollection.cs
- InstanceStoreQueryResult.cs
- SqlTrackingService.cs
- DataObject.cs
- __Filters.cs
- DbConnectionStringCommon.cs
- Hyperlink.cs