我正在使用一组延迟签名的程序集,我可以在跳过验证后从 GAC 安装和加载这些程序集(sn -Vr * ...
由于延迟签名作为一个过程只需要公钥文件
- sn -k keys.snk(公钥和私钥)
- sn -p keys.snk pkey.snk(仅公钥)
- 将 pkey.snk 添加到项目属性并选中“仅延迟签名”
- sn -v(显示组件是延迟签名的)
- sn -e (提取 pkey)
- fc(未找到差异)
我发现SNK 文件的前 160 个字节是 PKey ...,其余 436 个字节代表私钥。
虽然出于开发目的 sn-Vr 或 sn -R keys.snk (新的公钥/私钥对替换延迟签名的一个)就足够了,但我很想知道是否从程序集中提取公钥并将其配对用你自己的私钥就可以了……
这可能是一个潜在的安全漏洞(因为使用公钥令牌查找程序集)......难怪.Net框架/ SDK中没有内置工具允许这样做。
是否有记录整个 SNK 文件结构(文件格式)的地方?一般来说,这种方法可以奏效吗?你怎么看?