news 2026/4/18 5:44:20

39、程序开发中的延迟签名与异常处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
39、程序开发中的延迟签名与异常处理

程序开发中的延迟签名与异常处理

1. 延迟签名

在程序开发中,公司需要谨慎保管其公钥/私钥对中的私钥。若不可信人员获取私钥,他们可能会伪装成公司发布代码。因此,公司不会随意开放包含公钥/私钥对的文件访问权限。在大型公司里,程序集的最终强命名通常在开发流程的最后阶段,由有权访问密钥对的特殊团队完成。

然而,这在开发和测试过程中会引发一些问题:
- 公钥是程序集标识的四个组成部分之一,在提供公钥之前,无法设置程序集的标识。
- 弱命名的程序集不能部署到全局程序集缓存(GAC)。但开发人员和测试人员需要能够以发布时的方式编译和测试代码,包括其在GAC中的标识和位置。

为解决这些问题,出现了一种修改后的强命名方式,即延迟签名(也称为部分签名)。这种方式既能克服上述问题,又不会公开私钥。在延迟签名中,编译器仅使用公钥/私钥对中的公钥,将公钥放入清单以完善程序集的标识,同时使用一块0来为数字签名预留空间。

创建延迟签名程序集需完成以下两步:
1. 创建仅包含公钥的密钥文件副本,而非公钥/私钥对。
2. 在源代码的程序集作用域中添加一个名为DelaySignAttribute的额外属性,并将其值设置为true

若尝试将延迟签名的程序集部署到GAC,CLR不会允许,因为它不是强命名的。要在特定机器上部署,需从Visual Studio命令提示符发出以下命令,以禁用该机器上GAC对该程序集的签名验证,并允许将其安装到GAC中:

sn –vr MyAssembly.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 1:29:51

40、C 预处理器指令与反射和特性详解

C# 预处理器指令与反射和特性详解 1. 预处理器指令 1.1 什么是预处理器指令 源代码定义了程序,而预处理器指令则指导编译器如何处理源代码。例如,在某些条件下,你可能希望编译器忽略部分代码;在其他条件下,又希望编译这些代码。预处理器指令为你提供了这些选择。在 C 和…

作者头像 李华
网站建设 2026/4/15 15:03:13

FFmpeg-Rockchip:如何实现8K视频硬件加速的完整解决方案

FFmpeg-Rockchip:如何实现8K视频硬件加速的完整解决方案 【免费下载链接】ffmpeg-rockchip FFmpeg with async and zero-copy Rockchip MPP & RGA support 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-rockchip 还在为视频处理性能瓶颈而困扰吗…

作者头像 李华
网站建设 2026/4/18 3:51:14

暗黑2多开革命:D2RML智能启动器终极指南

暗黑2多开革命:D2RML智能启动器终极指南 【免费下载链接】D2RML Diablo 2 Resurrected Multilauncher 项目地址: https://gitcode.com/gh_mirrors/d2/D2RML 还在为暗黑破坏神2重制版的多账号管理而头疼吗?每次切换账号都要重复输入密码、等待加载…

作者头像 李华
网站建设 2026/4/18 3:48:28

lvgl界面编辑器实战案例:制作一个简单的设置菜单(入门级)

用可视化工具快速打造嵌入式设置菜单:LVGL SquareLine Studio 实战入门你有没有过这样的经历?明明功能逻辑已经写好了,但一想到要在屏幕上画几个按钮、排个布局,就得反复调试坐标、字体、颜色,改一次界面要烧录三遍程…

作者头像 李华
网站建设 2026/4/18 2:29:02

BEAST 2贝叶斯进化分析完全掌握:从配置到实战应用

贝叶斯进化分析是现代生物学研究的核心技术,BEAST 2作为该领域的权威工具,通过先进的MCMC算法为分子序列数据构建精确的系统发育树。无论您是进化生物学研究者还是生物信息学新手,本指南将带您快速掌握这一强大工具的使用方法。🚀…

作者头像 李华
网站建设 2026/4/17 21:21:04

双向A*寻路算法:如何让机器人导航效率提升50%?

双向A*寻路算法:如何让机器人导航效率提升50%? 【免费下载链接】PathPlanning Common used path planning algorithms with animations. 项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning 🤔 你是否遇到过这样的场景&#x…

作者头像 李华