狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

從COM組件調(diào)用.NET組件編程實(shí)戰(zhàn)

從COM組件調(diào)用.NET組件編程實(shí)戰(zhàn)

更新時(shí)間:2024-04-12 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

在我的編程實(shí)踐中,需要從.NET的Web Form頁(yè)面?zhèn)鬟f加密的字符串信息(如用戶名和密碼等)到ASP頁(yè)面,然后在該頁(yè)面對(duì)該加密字符串進(jìn)行解密。如果傳遞的不是加密串,通過(guò)GET或POST的方式就可以直接傳遞并在ASP頁(yè)面中接收,但問(wèn)題是在.NET的Web Form頁(yè)面中加了密的字符串如何才能在ASP中進(jìn)行解密呢?這主要由于ASP并不能直接訪問(wèn)由.NET提供的托管類和組件。這時(shí)我們就只能借助于COM組件來(lái)實(shí)現(xiàn)了,通過(guò)COM的互操作我們可通過(guò).NET生成COM組件,然后在ASP頁(yè)面中訪問(wèn)該COM組件就可以了。



本文實(shí)現(xiàn)的是將加密的用戶名與密碼從.aspx頁(yè)面?zhèn)鬟f到.asp頁(yè)面,下面就來(lái)介紹這些操作的具體步驟:



一、制作具有加密、解密字符串的.NET程序集(VS.NET類庫(kù)工程)

這個(gè)程序集將會(huì)變成COM組件,使用DES對(duì)稱加密代碼,可以加密碼,可以加密解密,支持中文!

//文件名:StringCrypt.cs

using System;

using System.Runtime.InteropServices;

using System.Security.Cryptography;

using System.IO;

using System.Text;



namespace jonson

{

// 首先建立接口,這個(gè)是Com必須使用的

[Guid("BF6F9C17-37FA-4ad9-9601-C11AD5316F2C")]

public interface IEncrypt

{

string Encrypt(string pToEncrypt,string sKey);

string Decrypt(string pToDecrypt,string sKey);

}



//接口的實(shí)現(xiàn)

[Guid("3FBDBB63-3C36-4602-89E1-73EDB0F167D0")]

public class StringCrypt : IEncrypt

{

// 加密的方法

public string Encrypt(string pToEncrypt, string sKey)

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

//把字符串放到byte數(shù)組中

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);

//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);



//建立加密對(duì)象的密鑰和偏移量

//原文使用ASCIIEncoding.ASCII方法的GetBytes方法

//使得輸入密碼必須輸入英文文本

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);

//Write the byte array into the crypto stream

//(It will end up in the memory stream)

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

//Get the data back from the memory stream, and into a string

StringBuilder ret = new StringBuilder();

foreach(byte b in ms.ToArray())

{

//Format as hex

ret.AppendFormat("{0:X2}", b);

}

ret.ToString();

return ret.ToString();

}



// 解密的方法

public string Decrypt(string pToDecrypt, string sKey)

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();



//Put the input string into the byte array

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];

for(int x = 0; x < pToDecrypt.Length / 2; x++)

{

int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));

inputByteArray[x] = (byte)i;

}



//建立加密對(duì)象的密鑰和偏移量,此值重要,不能修改

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

//Flush the data through the crypto stream into the memory stream

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();



//Get the decrypted data back from the memory stream

//建立StringBuilder對(duì)象,CreateDecrypt使用的是流對(duì)象,必須把解密后的文本變成流對(duì)象

StringBuilder ret = new StringBuilder();



return System.Text.Encoding.Default.GetString(ms.ToArray());

}

}

}

說(shuō)明:注意上面的Guid是使用vs.net工具菜單里面的創(chuàng)建guid工具生成的,這個(gè)每個(gè)Com組件所必須的。輸入密匙的時(shí)候,必須使用英文字符,區(qū)分大小寫,且字符數(shù)量是8個(gè),不能多也不能少,否則出錯(cuò)。



然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符。在命令行內(nèi)打下cd c:\ <回車>

sn -k myKey.snk<回車>

這樣就在C盤根目錄下生成一個(gè)名叫myKey.snk的強(qiáng)名稱文件,然后將其拷貝到上述工程目錄中(與StringCrypt.cs文件同目錄)后關(guān)閉提示符窗口。

在vs.net的那個(gè)類庫(kù)工程自動(dòng)生成的AssemblyInfo.cs文件內(nèi)

把[assembly: AssemblyKeyFile("")]改成[assembly: AssemblyKeyFile("../../myKey.snk ")]

把[assembly: AssemblyVersion("1.0.*")]改成[assembly: AssemblyVersion("1.0.0.0")] // 注意:這時(shí)你的Com組件版本為1.0.0.0版



然后按Shift + Ctrl + B鍵生成dll庫(kù)(使用Release模式),StringCrypt.dll。這時(shí)候,程序集就建立成功了。



二、注冊(cè)該程序集并創(chuàng)建一個(gè)類型庫(kù)



仍然使用開始菜單中的Visual Studio .Net命令提示符

進(jìn)入你的項(xiàng)目目錄,假設(shè)為D:\project\bin\Release

在對(duì)話框中輸入

d:<回車>

cd project\bin\release<回車>

然后輸入 dir 命令可以看見StringCrypt.dll文件

然后輸入:regasm StringCrypt.dll<回車>

然后就在這個(gè)目錄下生成了StringCrypt.tlb類型庫(kù)文件。不要關(guān)閉此提示符窗口。

這時(shí)候,這個(gè).dll的.net程序集就變成一個(gè)標(biāo)準(zhǔn)的Com組件了,但是還不能用,必須讓它變成全局Com組件。



這個(gè)regasm 實(shí)用程序?qū)?chuàng)建一個(gè)類型庫(kù)并在 Windows 注冊(cè)表中對(duì)其進(jìn)行注冊(cè),以便 COM Services可以訪問(wèn).NET組件。在使用regasm對(duì).NET進(jìn)行注冊(cè)之后,標(biāo)準(zhǔn)的Windows客戶就可以后期綁定組件中的類。注冊(cè)組件的過(guò)程必須一次完成。在.NET組件被注冊(cè)之后,所有的COM 客戶都可以訪問(wèn)它。



三、將程序集添加到全局程序集緩存中



在使用.NET程序集之前,我們必須把程序集安裝到全局的高速緩存中。為此進(jìn)入Visual Studio .Net提示符窗口,輸入



gacutil /I StringCrypt.dll<回車>



這時(shí),你的這個(gè)dll就被復(fù)制到全局程序集緩存中了。也就是說(shuō)無(wú)論在這個(gè)電腦的哪個(gè)硬盤上都可以使用此dll組件了。



四、使用方法

1. 在source.aspx中生成加密串

using jonson;



jonson.StringCrypt crypt = new jonson.StringCrypt();

String tmpstr = username+"^"+password;

… …

strinfo = crypt.Encrypt(tmpstr,"fk58Fgju"); // fk58Fgju為密匙

Response.Redirect("target.asp?info="+strinfo);



2. 在target.asp頁(yè)面中接收并解密字符串

info = Request.QueryString(“info”)

set obj = Server.CreateObject("jonson.StringCrypt")



str1 = obj.Encrypt(info,"fk58Fgju") // 解密



本文的順利實(shí)現(xiàn),得到了網(wǎng)友TomMax(笑望人生)等人的大力幫助,在此表示衷心的感謝。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
3atv一区二区三区| 国产蜜臀97一区二区三区| 亚洲黄色在线| 在线观看的日韩av| 亚洲国产精品第一区二区三区| 91啪在线观看| 欧美在线视频二区| 欧美精品黄色| 亚洲三级色网| 国产女主播一区二区三区| 另类av一区二区| 色婷婷综合激情| 欧美精品精品一区| 亚洲精品一区二区三区香蕉 | 日韩精品一区二区三区在线观看| 欧美肥妇bbw| 2024国产精品| 亚洲少妇30p| 天天免费综合色| 激情伊人五月天久久综合| 国产精品99久久久久久有的能看 | 欧美少妇一区二区| 欧美mv日韩mv国产网站| 国产精品私房写真福利视频| 亚洲三级在线播放| 日韩av电影天堂| 国产99久久久国产精品潘金网站| 不卡区在线中文字幕| 影音先锋中文字幕一区二区| 亚洲综合不卡| 欧美一卡二卡在线| 国产精品久久久久久久蜜臀| 亚洲第一综合色| 国产99久久精品| 亚洲高清在线| 欧美猛男gaygay网站| 精品国产一区久久| 亚洲精品视频在线观看免费| 玖玖九九国产精品| 欧美精品亚洲精品| 色婷婷激情综合| 久久久久久久久久看片| 亚洲成人综合网站| 不卡视频一二三| 美日韩在线观看| 日韩女优制服丝袜电影| 夜夜嗨av一区二区三区| 国产精品一二二区| 一区二区日本视频| 日韩视频免费观看高清完整版| 亚洲色欲色欲www| 国产酒店精品激情| 国产精品欧美久久| wwwwww.欧美系列| 蜜臂av日日欢夜夜爽一区| 欧美日本免费| 欧美精品 国产精品| 亚洲精品视频在线观看网站| 成人午夜视频在线观看| 久久久99爱| 国产精品无码永久免费888| 久久国产夜色精品鲁鲁99| 亚洲精品在线视频观看| 欧美一级夜夜爽| 日韩精品视频网| 亚洲人成久久| 久久综合狠狠综合久久综合88 | 国产成人啪免费观看软件| 亚洲一区三区在线观看| 久久久精品日韩欧美| 极品美女销魂一区二区三区| 国产精品毛片| 亚洲欧美一区二区视频| 99麻豆久久久国产精品免费优播| 在线观看视频一区二区| 亚洲人成网站精品片在线观看| av成人免费在线观看| 欧美日韩高清一区二区不卡 | 中文有码久久| 国产精品国产三级国产有无不卡| 成人综合在线观看| 4hu四虎永久在线影院成人| 日韩成人免费在线| 香蕉国产精品偷在线观看不卡| 中文字幕制服丝袜一区二区三区 | 欧美私人免费视频| 日韩成人精品视频| 久久日韩精品| 亚洲一区在线看| 在线观看亚洲一区| 中文字幕亚洲欧美在线不卡| 91色|porny| 国产视频一区二区在线| 成人高清视频免费观看| 日韩一级在线观看| 风间由美一区二区三区在线观看| 欧美日韩亚州综合| 九九精品一区二区| 欧美年轻男男videosbes| 精品一区中文字幕| 欧美日韩高清影院| 国产麻豆精品一区二区| 5566中文字幕一区二区电影| 国内精品免费**视频| 欧美一区二区日韩一区二区| 国产一区二区三区高清播放| 51精品国自产在线| 成人午夜电影网站| 久久久精品免费观看| 国产精品大片| 一区二区三区四区不卡在线 | 欧美日韩激情一区二区| 国产成人综合亚洲91猫咪| 日韩欧美成人激情| 欧美成人精品| 亚洲精品国产精华液| 久久国产66| 韩国欧美一区二区| 精品国产乱码久久久久久老虎| 99久久精品国产毛片| 国产精品久久二区二区| 亚洲欧美国产精品桃花| 免费视频最近日韩| 日韩欧美中文一区二区| 欧美日韩国产精品一区二区亚洲| 亚洲婷婷综合色高清在线| 色综合久久天天| 懂色av一区二区在线播放| 国产精品久久久久一区二区三区 | 欧美日韩黄色一区二区| 91在线视频官网| 亚洲午夜激情av| 777亚洲妇女| 国产精品porn| 日日噜噜夜夜狠狠视频欧美人 | 国产午夜精品久久久久久久| 亚洲高清在线| 国产福利精品一区二区| 最近日韩中文字幕| 欧美在线你懂的| 91麻豆福利精品推荐| 亚洲不卡一区二区三区| 日韩亚洲欧美在线| 国产日韩精品久久| 国产ts人妖一区二区| 亚洲精品免费在线播放| 欧美丰满嫩嫩电影| 亚洲精品乱码| 成人激情校园春色| 性欧美大战久久久久久久久| 欧美一区二区免费视频| 国产日韩欧美三区| 99国产精品久久久久| 午夜视频在线观看一区二区三区| 精品久久久三级丝袜| 久久天堂精品| 一区视频在线| 国产69精品久久99不卡| 亚洲1区2区3区视频| 国产欧美综合在线观看第十页| 欧美亚洲视频| 欧美日韩妖精视频| 国产成人自拍在线| 偷偷要91色婷婷| 国产精品国产自产拍在线| 欧美一卡二卡在线| 91精彩视频在线观看| 欧美日韩在线三级| 国产欧美亚洲日本| 欧美freesex交免费视频| 久久99精品久久久久| 一区二区三区免费观看| 久久香蕉国产线看观看99| 欧美日韩一区二区三区在线 | 久久综合久久99| 91精品在线免费| 久久尤物视频| 国产一区二区三区成人欧美日韩在线观看| 国产成人在线观看| 经典三级在线一区| 婷婷亚洲久悠悠色悠在线播放 | 成人三级伦理片| 韩国一区二区在线观看| 日日夜夜精品视频免费| 一个色在线综合| 亚洲人成亚洲人成在线观看图片 | 国产精品一区在线| 国内外成人在线| 久久66热偷产精品| 免费在线成人网| 日本成人在线视频网站| 亚洲三级电影全部在线观看高清| 久久久久久久电影| 久久久噜噜噜久久人人看 | 亚洲日本va在线观看| 国产精品毛片高清在线完整版| 国产午夜亚洲精品理论片色戒 | 欧美成人在线免费观看| 91蜜桃婷婷狠狠久久综合9色| 成人动漫av在线|