首先我们在客户端进行对数据的加密:这里我们使用的是64位DES加密算法。
设置密钥(Key)和初始值(IV)可放在配置文件中:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><appSettings>
<addkey="Key"value="fdautoit"/>
<addkey="IV"value="FDAUTOIT"/>
</appSettings>
*注:上面的值只有8个字节(64位)
在.cs文件中获取“Key”和“IV”
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->stringKey,Iv;
Key=ConfigurationManager.AppSettings["Key"];
Iv=ConfigurationManager.AppSettings["IV"];
定义一个加密方法:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->privatestringEncrypt(stringp_strEncrypt)
{
//SettheKeyandtheInitialVectorforEncrypt
byte[]key=Encoding.UTF8.GetBytes(Key);
byte[]iv=Encoding.UTF8.GetBytes(Iv);
//Conventthestringtobyte[]oftheData
byte[]byteData=Encoding.UTF8.GetBytes(p_strEncrypt);
//SetMemoryspaceforsavetheData
MemoryStreammemoryData=newMemoryStream();
//
//DESdes=newDESCryptoServiceProvider();
//RC2des=newRC2CryptoServiceProvider();
//Rijndaeldes=newRijndaelManaged();
TripleDESdes=newTripleDESCryptoServiceProvider();
des.Key=key;
des.IV=iv;
des.Mode=CipherMode.CBC;
//CreatetheMethodwiththeKeyandIV
ICryptoTransformtransform=des.CreateEncryptor();
//CreatetheEnCryptstream
CryptoStreamcryptostream=newCryptoStream(memoryData,transform,CryptoStreamMode.Write);
//writeintotheMemorystream
try
{
cryptostream.Write(byteData,0,byteData.Length);
}
catch
{
thrownewException("EncryptDatawrongofthewritetostream!");
}
cryptostream.FlushFinalBlock();
cryptostream.Close();
//returnmemoryData.ToString();
returnConvert.ToBase64String(memoryData.ToArray());
}
在这个方法返回的是一个加密后的数据。
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->privatevoidValidServiceMethod()
{
//EncrypttheusernameandpasswordofSoapHeader
stringm_strName= Encrypt("admin",EncryptionAlgorithm.Des);
stringm_strPwd= Encrypt("admin",EncryptionAlgorithm.Des);
//newaSoapHeaderandaWebService
MySoapHeader myheader=new MySoapHeader ();
MyServicemyservice=newMyService();
myheader.UserName=m_strName;
myheader.PassWord=m_strPwd;
//SettheSoapHeadervalidatetoService
myservice.FDSoapHeaderValue= myheader ;
//CallMethodofwebservice
myservice.GetMoney();
}
这样就完成了加密的过程(用户名,密码,数据可以以参数的形式传入)
在服务 器端同样设置配置文件。这于客户端的是一模一样的。
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><appSettings>
<addkey="Key"value="fdautoit"/>
<addkey="IV"value="FDAUTOIT"/>
</appSettings>
同样在代码文件中获取其值
编写解密方法:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->privatestringDecrypt(stringp_strDecrypt)
{
//SettheKeyandtheInitialVectorforDecrypt
byte[]key=Encoding.UTF8.GetBytes(Key);
byte[]iv=Encoding.UTF8.GetBytes(Iv);
//Coventthestringtobyte[]withtheEncryptData
//byte[]EncrypData=Encoding.UTF8.GetBytes(p_strDecrypt);
byte[]EncrypData=Convert.FromBase64String(p_strDecrypt);
//SettheMemorystreamSpaceforsavedata
MemoryStreammemoryData=newMemoryStream();
//CreateDESforDecrypt
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
des.Key=key;
des.IV=iv;
des.Mode=CipherMode.CBC;
//DecryptwiththekeyandInitialVector
ICryptoTransformtransform=des.CreateDecryptor();
//SavetoMemoryStream
CryptoStreamcryptostream=newCryptoStream(memoryData,transform,CryptoStreamMode.Write);
//outputthedata
try
{
cryptostream.Write(EncrypData,0,EncrypData.Length);
}
catch(Exceptionex)
{
thrownewException("writetostreamwrong!"+ex.Message);
}
cryptostream.FlushFinalBlock();
cryptostream.Close();
//outputdata
returnEncoding.UTF8.GetString(memoryData.ToArray());
}
Soap头:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->publicclassMySoapHeader:SoapHeader
{
string_name;
string_passWord;
publicstring UserName
{
get{return_name;}
set{_name=value;}
}
publicstringPassWord
{
get{return_passWord;}
set{_passWord=value;}
}
}
更改上篇中的方法:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->publicboolValiHeader(outstringReturnMsg)
{
MySoapHeader myheader=new MySoapHeader();
boolflag=false;
string UserName=Decrypt(myheader.UserName);
string PassWord=Decrypt(myheader.PassWord);
if(UserName=="admin"&&PassWord=="admin")
{
flag=true;
ReturnMsg="YouAreSuccessfully";
}
else
{
ReturnMsg="YouAreFailted";
}
returnflag;
}
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->[WebMethod]
[SoapHeader("header", Direction = SoapHeaderDirection.In)]
publicstringCheckHeader()
{
stringReturnMsg="";
boolIsTrue=ValiHeader(outReturnMsg);
returnReturnMsg;
}
如果方法:“ValiHeader”返回的是true 表示验证成功,如果返回的是false表示用户名和密码有误。
有关SoapHeader验证头密码核心代码就 是这样了。其中省略了很多代码。
分享到:
相关推荐
利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
4.1.2 用户自定义函数的编写 58 4.2 PHP常用函数 59 4.2.1 获得日期时间信息的函数getdate 60 4.2.2 获得当前时间的函数 4.2.2 gettimeofday 61 4.2.3 日期验证函数checkdate 61 4.2.4 格式化本地时间日期的函数date...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...
Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮...