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
- AnimationClockResource.cs
- StickyNoteHelper.cs
- RoutedEventConverter.cs
- StringFunctions.cs
- SafeFileMappingHandle.cs
- WebPartMinimizeVerb.cs
- LocatorPart.cs
- ViewStateAttachedPropertyFeature.cs
- SecurityElement.cs
- SimpleTextLine.cs
- UserValidatedEventArgs.cs
- InvokeMemberBinder.cs
- ClientScriptItemCollection.cs
- DependencyObjectCodeDomSerializer.cs
- EdmError.cs
- Animatable.cs
- Decimal.cs
- Sql8ExpressionRewriter.cs
- Odbc32.cs
- Triangle.cs
- templategroup.cs
- CharacterHit.cs
- SerializerProvider.cs
- PerformanceCountersElement.cs
- RootProjectionNode.cs
- HostingEnvironmentSection.cs
- AsyncResult.cs
- ReferentialConstraint.cs
- ByValueEqualityComparer.cs
- BreakRecordTable.cs
- TextServicesPropertyRanges.cs
- WebBrowserContainer.cs
- TreePrinter.cs
- SqlInternalConnectionTds.cs
- HttpListenerPrefixCollection.cs
- HtmlTableRow.cs
- ResXResourceWriter.cs
- OperationCanceledException.cs
- StatusBar.cs
- BinaryOperationBinder.cs
- LongAverageAggregationOperator.cs
- ImageListImage.cs
- StatusStrip.cs
- InstalledVoice.cs
- DependencyObjectValidator.cs
- XmlReader.cs
- EncryptedKeyIdentifierClause.cs
- RunClient.cs
- DesignerDataStoredProcedure.cs
- InputLanguageSource.cs
- ResXResourceWriter.cs
- XmlDocument.cs
- QilStrConcat.cs
- CompositeTypefaceMetrics.cs
- SqlReorderer.cs
- MimeBasePart.cs
- ConnectionPointGlyph.cs
- CodeAccessSecurityEngine.cs
- ByeOperationCD1AsyncResult.cs
- ByteRangeDownloader.cs
- XmlTypeAttribute.cs
- ActivityInfo.cs
- ISCIIEncoding.cs
- RsaEndpointIdentity.cs
- ChangeBlockUndoRecord.cs
- HashJoinQueryOperatorEnumerator.cs
- XmlParserContext.cs
- CodeCatchClauseCollection.cs
- DbExpressionVisitor_TResultType.cs
- FloaterParagraph.cs
- Pair.cs
- ClientProxyGenerator.cs
- XamlGridLengthSerializer.cs
- X509LogoTypeExtension.cs
- ActivityExecutor.cs
- SpeechEvent.cs
- DataSourceCacheDurationConverter.cs
- FormsAuthentication.cs
- WebEventCodes.cs
- FixedSOMTableRow.cs
- FormView.cs
- FixedSOMFixedBlock.cs
- PrtTicket_Public_Simple.cs
- DataBinder.cs
- RuntimeConfig.cs
- DictionaryEntry.cs
- LowerCaseStringConverter.cs
- TextTreeUndo.cs
- _ListenerResponseStream.cs
- FlowDocumentPage.cs
- SafeLibraryHandle.cs
- PropertyValue.cs
- XPathLexer.cs
- DockPattern.cs
- Int16Animation.cs
- SafeFileHandle.cs
- InputChannelBinder.cs
- DataReaderContainer.cs
- DataBindingExpressionBuilder.cs
- COM2Properties.cs