程序集强签名

1、特点

1.1、强签名的程序集可以注册到GAC(全局应用程序集缓存),不同的应用程序可以共享同一个dll。

1.2、强签名的库(应用程序)只能引用强签名的库。非强签名的库(应用程序)没有限制,既可以引用强签名的库,也可以引用非强签名的库。(实际测试,强签名的应用只引用非强签名的程序集但不使用是可以的,只要使用了引入库的东西,那就会报:引用的程序集没有强签名)

1.3、强签名无法保护源代码,但能防止dll被第三方篡改。

1.4、能防止dll冲突。

2、方法

--如果有源代码

项目 -> 右键 -> 属性 -> 签名:

勾选 Sign the assembly(签名程序集)

填写 key file name,如果勾选了密码保护key file,那么就输入密码。点击OK就创建好了签名文件。

将属性保存,然后再次编译,程序集就是强签名程序集了。

--如果没有源代码

1、首先创建一个签名key file,可以通过有源代码的方式,创建key file备用;也可以通过VS 控制台执行sn.exe -k D:\sn.snk 生成key。

2、将无源代码的dll,通过 ILDASM.exe MagicOrm.dll /OUTPUT=D:\MagicOrm.il进行反汇编

注意:如果dll有资源文件,同时会生成MagicOrm.res文件

3、带上签名文件重新汇编为dll,如果有资源文件生成,也需要带上,命令:ILASM.exe MagicOrm.il /dll /output=D:\MagicOrm.dll /Key=sn.snk /Resource=MagicOrm.res

Over

时间: 2024-10-10 14:07:47

程序集强签名的相关文章

程序集强签名和安装程序数字签名

一.程序集强签名 这个是.net 中的概念,为了保证程序集本身不被篡改,即保证这个程序集是你开发的,同时强命名使不同的程序可以指定不同的程序集版本,不影响其他应用程序.要对程序集进行强签名,无需使用购买的代码签名数字证书,用.NET提供的sn工具就可以生成snk文件,你只要保存好这个文件,就可以保证你的程序集的签名. 方法1:在SDK中创建强名称签名的程序集(Sn.exe),可以生成密钥对.我们使用如图9-4的命令生成一个新的密钥对并保存到本地文件test.snk中. 签名时使用编译器执行 CS

程序集生成失败 -- 引用的程序集“ThoughtWorks.QRCode”没有强名称,为没有源码的程序集强签名

进入sdk提示符界面,依次输入如下指令 sn -k ThoughtWorks.QRCode.snk ildasm ThoughtWorks.QRCode.dll /out=ThoughtWorks.QRCode.il ilasm ThoughtWorks.QRCode.il /dll /resource=ThoughtWorks.QRCode.res /key=ThoughtWorks.QRCode.snk /optimize sn -v ThoughtWorks.QRCode.dll

C# 依赖同一个强签名程序集的不同版本

最近遇到一个问题就是要在同一个项目中同时使用Newtonsoft.Json.dll的不同版本.在网上搜索了下解决方案,基本都是在app.config或web.config中进行设置. 这次我亲自试验了一下,基本能解决我的问题.在此记录一下,以后参考.app.config的配置如下图所示: <codeBase>元素中的href属性可以使用相对路径. 至于如何获取强签名程序集的publicKeyToken,我知道的方法有有两种: 1.打开visual studio command prompt :

强命名程序集,签名,延迟签名

强命名程序集 如果一个程序集有一个唯一的标记,那么这个程序集就可以叫做强命名程序集.在.NET框架中是通过公钥/私钥加密来产生这个唯一标记的.一个强命名程序集包含四个唯一标志程序集的特性:文件名(没有扩展名),版本号,语言文化信息(如果有的话),公有秘钥. 这些信息存储在程序集的清单(manifest)中.清单包含了程序集的元数据,并嵌入在程序集的某个文件中.下面的字符串标识了二个不同的程序集文件: “MyType, Version=1.0.1.0,Culture=neutral, Public

VS报:&quot;dll标记为系统必备组件,必须对其进行强签名&quot;错误

问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布): 2)右击该项目,选择“属性”: 3)选择“发布”: 4)点击“应用程序文件”按钮: 5)找到该“XX.dll”,将发布状态有“系统必备”改为“包括(自动)”: 6)再次运行成功. 参考: 1. 首先说明一下:X是某程序集的名称,相当于数学中的未知数X. 看到这样的提示,开始我以为是把程序集X的发

使用VS2010命令提示窗口操作程序集强命名

说明:文中示例均以将文件置于D盘根目录(D:\)下为例. 一.查看程序集是否具有强命名 sn -T d:\LicBase.dll 若有则会显示PublicKeyToken值,反之不会. 二.给无强命名程序集添加强命名 1.创建密钥对,并将其存储在 d:\LicBase.snk 中 sn -k d:\LicBase.snk 2.反编译目标程序集 ildasm d:\LicBase.dll /out=d:\LicBase.il 3.重新编译,附带强命名参数 ilasm d:\LicBase.il /

.net程序集强名称签名实践

引用:  http://www.cnblogs.com/cpcpc/archive/2011/01/17/2123086.html 强名称是由程序集的标识加上公钥和数字签名组成的.其中,程序集的标识包括简单文本名称.版本号和区域性信息(如果提供的话).强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的.Microsoft? Visual Studio? .NET 和在 .NET Framework SDK 中提供的其他开发工具能够

NET 强签名

强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll. 3. 强签名无法保护源代码,强签名的dll是可以被反编译的. 4. 强签名的dll可以防止第三方恶意篡改. 强签名的方法: 1. 有源代码: 1.1 使用vs tool command:snk –k mykey.snk 生成签名公钥. 1.2 将公钥加入项目中,并设置项目属性,设置签名公

程序集延迟签名-学习笔记

背景:为了防止私钥泄露,公司里只有少数几个人才能访问到私钥.其他同事开发时,也需要编译,但不又能给他们密钥,我们就需要使用延迟签名技术了. 1.       创建密钥对 sn -k mykeyfile.pfx 无密码保护,该文件需要安全保管 2.       安装密钥对到于强名称 CSP 中容器 sn -i mykeyfile.pfx mykeycontainer 3.       提取公钥文件 sn -p mykeyfile.pfx mykeyfile.pub 4.       显示公钥标记