ASP.NET WCF SOAP + SHA1 Hash Compare 方法 I

 
ASP.NET WCF SOAP + SHA1 Hash Compare 方法 I
 

   WCF Server – IService.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Runtime.Serialization;
   using System.ServiceModel;
   using System.ServiceModel.Web;
   using System.Text;
 
   namespace SHA
   {
      [ServiceContract]
      public interface IService
      {
         [OperationContract]
         Byte[] GetSHA1Hash(string PlainText);
      }
   }
 

 

   WCF Server – Service.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Runtime.Serialization;
   using System.ServiceModel;
   using System.Text;
   using System.Security.Cryptography;
   using System.Configuration;
 
   namespace SHA
   {
      public class Service : IService
      {
         public Byte[] GetSHA1Hash(string PlainText)
         {
            SHA1 Hash = SHA1.Create();
            Byte[] Data = Hash.ComputeHash(Encoding.Default.GetBytes(PlainText));
            return Data;
         }
      }
   }
 

 

   Client Side
 
   using System;
   using System.Security.Cryptography;
   using System.Text;
   using Portal.WCFServiceReference;
 
   namespace Portal
   {
      public partial class RSA : System.Web.UI.Page
      {
 
         protected void Page_Load(object sender, EventArgs e)
         {
             this.executeHashCompare("網頁正式更新");
         }
 
         private void executeHashCompare(String PlainText)
         {
            SHA1 Hash = SHA1.Create();
            String Data1 = ByteToString(Hash.ComputeHash(Encoding.Default.GetBytes(PlainText)));
 
            WCFServiceClient Service = new WCFServiceClient();
            String Data2 = ByteToString(Service.GetSHA1Hash(PlainText));
 
            L1.Text += "PlainText : " + PlainText + "<br />";
            L1.Text += "Web Services Client SHA1 Hash : " + Data1 + "<br />";
            L1.Text += "Web Services Server SHA1 Hash : " + Data2 + "<br />";
 
            if (Data1.Equals(Data2)) L1.Text += "Result Corrected";
            else L1.Text += "Result Incorrected";
         }
 
         private String ByteToString(Byte[] Data)
         {
            String Result = "";
            foreach (Byte item in Data) Result += item;
            return Result;
         }
 
      }
   }