签名过程
2016-03-28 10:11
323 查看
SN.exe
1:sn –k MyCompany.snk 创建密钥
2:sn -p E:\....XXX.pfx xxxx.snk 获取公钥
3:sn.exe -Ra XXX.dll XXX.pfx 重新签名
加密过程
![](https://images2015.cnblogs.com/blog/359739/201603/359739-20160328095904035-1902377886.png)
程序集的文件FileDef manifest 包含了组成程序集的所有文件的清单,当每个文件的名称被添加金mainfest时,该文件内容的hash也一起被存放,当包含mainfest的PE文件被构建后,PE文件的整个内容(除了任何认证签名,程序集的强命名数据,和PE头的checksum)被hash,然后使用私钥对这个hash值进行签名,然后产生的RSA加密值被存放在PE文件预留的区块(hash计算不会记算改区块).然后在CLR头更新该数字签名在文件中的位置。
发布者的公钥同样会被嵌入进PE文件的 AssemblyDef manifest 元数据表中 .
认证过程:
系统Hash包含manifest的文件,然后和嵌入的RSA数字签名进行对比(使用公钥解密后的),如果一直说明文件没有被修改过,另外系统hash程序集的其他文件,然后和定义在FileDef manifest里面的hash值进行对比,如果有任何一项hash值不匹配,说明程序集文件已经被损害了。
gacutil /i TestLib.dll 安装强命名程序集
1:sn –k MyCompany.snk 创建密钥
2:sn -p E:\....XXX.pfx xxxx.snk 获取公钥
3:sn.exe -Ra XXX.dll XXX.pfx 重新签名
加密过程
![](https://images2015.cnblogs.com/blog/359739/201603/359739-20160328095904035-1902377886.png)
程序集的文件FileDef manifest 包含了组成程序集的所有文件的清单,当每个文件的名称被添加金mainfest时,该文件内容的hash也一起被存放,当包含mainfest的PE文件被构建后,PE文件的整个内容(除了任何认证签名,程序集的强命名数据,和PE头的checksum)被hash,然后使用私钥对这个hash值进行签名,然后产生的RSA加密值被存放在PE文件预留的区块(hash计算不会记算改区块).然后在CLR头更新该数字签名在文件中的位置。
发布者的公钥同样会被嵌入进PE文件的 AssemblyDef manifest 元数据表中 .
认证过程:
系统Hash包含manifest的文件,然后和嵌入的RSA数字签名进行对比(使用公钥解密后的),如果一直说明文件没有被修改过,另外系统hash程序集的其他文件,然后和定义在FileDef manifest里面的hash值进行对比,如果有任何一项hash值不匹配,说明程序集文件已经被损害了。
安装强命名程序集
GAC程序集:%SystemRoot%\Microsoft.NET\Assemblygacutil /i TestLib.dll 安装强命名程序集
相关文章推荐
- nginx php版本隐藏
- leetcode 之Nim Game java实现
- Android KeyCode列表
- c# Dictionary的TryGetValue的用法
- leetcode之Nim Game C语言实现
- 自定义View <0> 继承现有的控件
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址
- Hyper-V 测试
- 支付宝即时到账接口,异步回调post请求的接受,Jersey 处理post参数的方法
- 动态规划解决约瑟夫环问题
- 动态规划解决约瑟夫环问题
- KMP字符串模式匹配详解
- Can't find temporary directory:internal error
- html 按钮旋转
- Unity3D中Prefab
- 单片机DA转换实现正弦波
- 页面5秒后跳转
- 以图搜图 - Google 相似图片搜索原理 - Java实现
- linux下处理txt中中文乱码的方法
- leetcode之Nim Game C++实现