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; } } } |