HashAlgorithm.cs
上传用户:hbhltzc
上传日期:2022-06-04
资源大小:1925k
文件大小:1k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. //------------------------------------------------------------------------------
  2. // <copyright file="HashAlgorithm.cs" company="Microsoft">
  3. //     Copyright (c) Microsoft Corporation.  All rights reserved.
  4. // </copyright>                                                                
  5. //------------------------------------------------------------------------------
  6. using System;
  7. using System.Diagnostics;
  8. using System.Security.Cryptography;
  9. namespace Microsoft.XmlDiffPatch
  10. {
  11. //////////////////////////////////////////////////////////////////
  12. // HashAlgorithm
  13. //
  14. internal class HashAlgorithm
  15. {
  16. // Fields
  17.     ulong _hash;
  18. // Constructor
  19. internal HashAlgorithm()
  20. {
  21. }
  22. // Properties
  23.     internal ulong Hash { get { return _hash; } } 
  24. // Methods
  25.     static internal ulong GetHash( string data )
  26.     {
  27.         return GetHash( data, 0 );
  28.     }
  29.     internal void AddString( string data )
  30.     {
  31.         _hash = GetHash( data, _hash );
  32.     }
  33.     internal void AddInt( int i )
  34.     {
  35.         _hash += ( _hash << 11 ) + (ulong)i;
  36.     }
  37.     internal void AddULong( ulong u )
  38.     {
  39.         _hash += ( _hash << 11 ) + u;
  40.     }
  41.     static private ulong GetHash( string data, ulong hash )
  42.     {
  43.         hash += ( hash << 13 ) + (ulong)data.Length;
  44.         for ( int i = 0; i < data.Length; i++ )
  45.             hash += ( hash << 17 ) + data[i];
  46.         return hash;
  47.     }
  48. }
  49. }