zoukankan      html  css  js  c++  java
  • Sn.exe(强名称工具)

     =============C#.Net 篇目录==============

    Strong Name实用工具 (Sn.exe) 有助于使用强名称对程序集进行签名。Sn.exe 提供用于密钥管理、签名生成和签名验证的选项。所有 Sn.exe 选项都区分大小写,生成密钥对默认放在temp环境变量路径。(生成密钥时,会调用Windows提供的Crypto API

    后缀:*.snk ,包含二进制形式的公钥和私钥。

     

    用法: sn [-q|-quiet] <option> [<parameters>]

    -c [<csp>]

    将默认加密服务提供程序 (CSP) 设置为用于强名称签名。此设置应用于整台计算机。如果不指定 CSP 名称,则 Sn.exe 将清除当前设置。

    -d <container>

    从强名称 CSP 中删除指定的密钥容器。

    -D <assembly1> <assembly2>

    验证两个程序集是否只是签名不同。这经常用作使用不同的密钥对重新为程序集创建签名后的检查。

    -e <assembly> <outfile>

    assembly 中提取公钥并将其存储在 outfile 中。

    -i <infile> <container>

    将密钥对从 <infile> 安装到名为 <container> 的密钥容器中。

    -k [<keysize>] <outfile>

    生成一个指定大小的新 RSACryptoServiceProvider 密钥并将其写入指定的文件。公钥和私钥都写入该文件。

    a)         如果不指定密钥大小,并且已安装了 Microsoft Enhanced(加强) Cryptographic Provider,则默认情况下生成 1,024 位的密钥;否则,生成 512 位的密钥。

    b)         如果安装了 Microsoft Enhanced Cryptographic Provider,则 keysize 参数支持 384 位至 16,384 位(增量为 8 位)的密钥长度。如果安装了 Microsoft Base Cryptographic Provider,则支持 384 位至 512 位(增量为 8 位)的密钥长度。

    RSACryptoServiceProvider

    使用加密服务提供程序 (CSP) 提供的 RSA 算法的实现执行不对称加密和解密。此类不能被继承。

    -m [y|n]

    指定密钥容器是特定于计算机的还是特定于用户的。如果指定 y,则密钥容器是特定于计算机的。如果指定 n,则密钥容器是特定于用户的。

    如果既没有指定 y 也没有指定 n,则此选项显示当前设置。

    -o <infile> [<outfile>]

    <infile> 中的公钥转换成包含十进制字节值的逗号分隔列表的文本文件 <outfile>。如果省略 <outfile>,则文本改为复制到剪贴板。

    此选项不验证输入的是否只是公钥。如果 infile 包含带有私钥的密钥对,则会同时提取私钥。

    -p <infile> <outfile>

    <infile> 中的密钥对提取公钥并导出到 <outfile>

    -pc <container> <outfile>

    <container> 中的密钥对提取公钥并导出到 <outfile>

    -Pb [y|n]

    指定是否强制执行强名称跳过策略。如果指定 y,则在将完全信任程序集加载到完全信任 AppDomain 时,不验证这些程序集的强名称。

    如果既没有指定 y 也没有指定 n,则此选项显示当前设置。默认值为 y

    -q

    安静模式。取消显示除错误信息外的任何其他输出。

    -R[a] <assembly> <infile>

    <infile> 中的密钥对重新签署已签名或部分签名的程序集。

    如果使用了 -Ra,则重新计算程序集中所有文件的哈希值。

    -Rc[a] <assembly> <container>

    使用 container 中的密钥对,重新签名先前已签名的程序集或延迟签名的程序集。

    如果使用 -Rca,则重新计算程序集中所有文件的哈希。

    -R Rc 选项对延迟签名的程序集很有用。在这种情况下,编译时只设置公钥,在以后知道私钥时执行签名。

    -Rh <assembly>

    重新计算程序集中所有文件的哈希值。

    -t[p] <infile>



    -T[p] <assembly>

    -t[p] <infile>      显示 <infile> 中的公钥的标记。-tp 选项除显示标记外还显示公钥。

    -T[p] <assembly>  显示程序集的公钥标记。该程序集必须是包含程序集清单的文件的名称。-Tp 选项除显示标记外还显示公钥。

    Sn.exe 使用公钥的哈希函数计算该标记。为节省空间,公共语言运行时在记录对具有强名称的程序集的依赖性时,将公钥标记存储在清单中,作为对另一个程序集的引用的一部分。

    请注意,这两选项不验证程序集签名,而且不应用于做出信任决策。此选项仅显示原始公钥标记数据。

    -TS <assembly> <infile>

    使用 infile 中的密钥对,对已签名或部分签名的 assembly 进行测试签名。

    -TSc <assembly> <container>

    使用密钥容器 container 中的密钥对,对已签名或部分签名的 assembly 进行测试签名。

    -v[f] <assembly>

    验证 <assembly> 的强名称签名自我一致性,如果指定了

    -vf,则即使在注册表中禁用了验证,也强制验证。

    -Vl

    列出此计算机上的强名称验证的当前设置。

    -Vr <assembly> [<userlist>] [<infile>]

    注册 assembly 以跳过验证。或者,可以指定用逗号分隔的用户名列表。如果指定 infile,则验证保持启用,但 infile 中的公钥将用于验证操作。可以用 *, strongname 的形式指定程序集,以注册所有具有指定强名称的程序集。Strongname 应指定为十六进制数字的字符串以表示标记形式的公钥。

    警告:仅在开发期间使用此选项。将程序集添加到跳过验证列表会产生安全漏洞。如果将某程序集添加到跳过验证列表中,则恶意程序集可以使用该程序集的完全指定程序集名称来隐藏身份,完全指定程序集名称由程序集名称、版本、区域性和公钥标记组成。这使恶意程序集也可以跳过验证。

    -Vu <assembly>

    <assembly> 注销验证跳过。遵循与 -Vr 相同的 <assembly>命名规则。

    -Vx

    移除所有验证跳过项。

         相关链接:

                        (2)强名称程序集与数字证书

                        数字签名|数字证书

        资料收集:

                     (MSDN)Sn.exe(强名称工具)



    作者:滴答的雨
    出处:http://www.cnblogs.com/heyuquan/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    欢迎园友讨论下自己的见解,及向我推荐更好的资料。
    本文如对您有帮助,还请多帮 【推荐】 下此文。
    谢谢!!!  (*^_^*)

    技术群:185718116(广深莞·NET技术),欢迎你的加入
    技术群:广西IT技术交流(广西IT技术交流),欢迎你的加入

  • 相关阅读:
    JavaScript 为字符串添加样式 【每日一段代码80】
    JavaScript replace()方法 【每日一段代码83】
    JavaScript for in 遍历数组 【每日一段代码89】
    JavaScript 创建用于对象的模板【每日一段代码78】
    html5 css3 新元素简单页面布局
    JavaScript Array() 数组 【每日一段代码88】
    JavaScript toUTCString() 方法 【每日一段代码86】
    位运算
    POJ 3259 Wormholes
    POJ 3169 Layout
  • 原文地址:https://www.cnblogs.com/heyuquan/p/2428005.html
Copyright © 2011-2022 走看看