问题标签 [snk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
96826 浏览

.net - .snk 有什么用?

.snk 文件有什么用?我知道它代表Strongly Named Key,但是关于它是什么以及它是如何工作的所有解释都超出了我的想象。

关于如何使用强命名密钥及其工作原理是否有任何简单的解释?

0 投票
2 回答
744 浏览

.net - 我是否需要为每个版本的强命名库创建一个新的 .snk 密钥文件?

如果我用 .snk 文件强命名类库,如果我创建同一个库的新版本,是否需要用新的替换这个 .snk 文件?

0 投票
2 回答
580 浏览

.net - 如何使用 snk 文件在 PHP 中对数据进行签名?

如何将用于签署 .NET 程序集的 .snk RSA 密钥对文件转换为可与 PHP 或其他软件一起使用的基于 XML 的文件?

XML 文件示例:

0 投票
3 回答
537 浏览

.net - 强名称签署托管应用程序时要考虑什么?

我想强命名一个托管应用程序,它通过互操作引用许多托管程序集以及 ActiveX 和 COM 组件(用 C++ 编写)。而且因为强命名程序集不能引用弱命名程序集,您能否告诉我应该为哪些问题做好准备,您遇到了什么问题,尤其是在处理那些 ActiveX 和 COM 互操作时?

此应用程序的解决方案很大。它由 50 多个托管 C#、Vb.net、本机 C++ 和托管 C++/CLI 项目组成。因此,您提供的信息和真实生活故事越多,我就越能做好准备,让自己免于头痛。

谢谢。

0 投票
1 回答
1546 浏览

.net - Snk 文件和延迟签名

我正在使用一组延迟签名的程序集,我可以在跳过验证后从 GAC 安装和加载这些程序集(sn -Vr * ...

由于延迟签名作为一个过程只需要公钥文件

  1. sn -k keys.snk(公钥和私钥)
  2. sn -p keys.snk pkey.snk(仅公钥)
  3. 将 pkey.snk 添加到项目属性并选中“仅延迟签名”
  4. sn -v(显示组件是延迟签名的)
  5. sn -e (提取 pkey)
  6. fc(未找到差异)

我发现SNK 文件的前 160 个字节是 PKey ...,其余 436 个字节代表私钥。

虽然出于开发目的 sn-Vr 或 sn -R keys.snk (新的公钥/私钥对替换延迟签名的一个)就足够了,但我很想知道是否从程序集中提取公钥并将其配对用你自己的私钥就可以了……

这可能是一个潜在的安全漏洞(因为使用公钥令牌查找程序集)......难怪.Net框架/ SDK中没有内置工具允许这样做。

是否有记录整个 SNK 文件结构(文件格式)的地方?一般来说,这种方法可以奏效吗?你怎么看?

0 投票
3 回答
3905 浏览

.net - 多个项目需要使用1个SNK文件

我正在使用 Visual Studio 2008,并且我有一个包含多个项目的解决方案。我有 1 个 snk 来签署我的程序集,它位于解决方案文件夹中。

我已将 snk 链接到我的每个项目,但现在当我尝试使用链接的 snk 签署我的项目时,我无法通过文件对话框找到 snk 文件。

我在这里错过了一步吗?

0 投票
2 回答
7430 浏览

c# - 使用强名称对程序集进行签名,可以,但是如果某些 3rd 方 DLL 未签名怎么办?

我了解签署程序集背后的基本思想,但在使用 Telerik 或第二方 DLL 时遇到问题。我有一个使用我自己的 2 个 .DLL 的 .exe,这些 DLL 又使用企业库 DLL 和 Telerik DLL。

我给我的所有项目起了一个强名称 .snk,但是在编译时编译器解释说,例如,企业库 DLL 没有签名,这是有道理的。

我不想使用 te sn.exe -Vr 命令关闭验证,甚至不想延迟签署我的项目。但是,这将如何运作?我很感激任何见解。

0 投票
1 回答
2140 浏览

managed-c++ - 使用 snk 文件时出现托管 C++ 错误::“缺少签名所需的私钥”

为什么在尝试使用 .snk 文件签署托管 C++ 项目时出现此错误。“......SlimDX\build\vs2010\x86\Debug\VOS.snk' 缺少签名所需的私钥”

我试过在项目设置中设置它::

  1. 密钥文件 = $(ProjectDir)x86\$(Configuration)\VOS.snk
  2. 延迟标志 = 否 (/DELAYSIGN:NO)

并且我尝试在 AssemblyInfo.cpp:: 中设置它

  1. [程序集:AssemblyKeyFile("VOS.snk")]
  2. [程序集:AssemblyDelaySignAttribute(false)]

我有 .snk 和 .pfx 文件。我在这里想念什么?在我的 C# .NET 3.5 项目中,我只需要 .snk 文件......为什么它在我的托管 c++ 项目中也不起作用?我是否还需要以某种方式使用我的 pfx 文件?

0 投票
3 回答
1204 浏览

.net - 有什么理由将 .snk 文件与项目源一起发送?

我时不时地在网络上看到一个示例项目,其中包含一个 .snk 文件,用于使用强名称对编译结果进行签名。

AFAIK这是完全错误的——一旦 .snk 文件被披露,任何人都可以生成一个程序集,该程序集可用于替换原始代码供应商提供但现在包含恶意代码的程序集。我想运送 .snk 文件的人不会认真对待这种风险,而只是运送文件,否则该项目将无法编译现成的。

除了“方便”之外,是否有任何理由发送 .snk 文件?

0 投票
2 回答
2299 浏览

.net - 使用强名称签名如何防止伪造一组程序集?

使用强名称(存储在 .snk 文件中的密钥对)进行签名(除其他用途外)旨在防止伪造组件

例如:我发送了一个用强名称签名的程序集,然后其他一些开发人员使用我的程序集,所以他的程序集现在包含对我的引用,提到我的密钥对的公钥。一些用户安装了该开发人员程序集和我的程序集,并愉快地使用了该开发人员的代码。如果其他人试图生成一个看起来像我的版本的程序集并说服用户这是一个“值得安装的更新”,那么伪造的程序集将不会加载,因为我控制着我的密钥对并且伪造的程序集没有使用相同的密钥对进行签名. 好的,酷。

但是,是什么阻止了恶意方伪造我的程序集和其他开发人员的依赖程序集并“运送”它们呢?他们抓住我的程序集和那个开发人员的程序集,篡改两者,用任何密钥对我的程序集的伪造版本进行签名,然后将对其的引用添加到依赖程序集的伪造版本中,也对其进行签名,然后将两者都发送出去。我的意思是恶意“运送”两个程序集不应该比“运送”一个程序集困难得多。

使用强名称签名如何防止伪造多个程序集?