强名称的原理(strong name)

来源:互联网 发布:centos sftp目录修改 编辑:程序博客网 时间:2024/05/02 06:45
强名称是一项在.net平台上的技术,它是来源于数字签名。数字签名的核心是非对称加密(RSA,EL Gamal)和Hash算法(MD5,SHA)。
利用sn.exe可以创建强名称的程序集:
sn.exe -k PublicPrivateKeyFile.snk
sn会随机的产生一对1024bit的密钥,你可以用他们进行加密解密了。你还可以把公钥从文件中分离出来:
sn.exe -p PublicPrivateKeyFile.snk PublicKeyFile.snk
如果你同时具有公钥和私钥,就可以使程序集具有强名称否则只能DelaySign了。
// C#
using System.Reflection;
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("PublicPrivateKeyFile.snk")]

强名称并不安全,我们可以将他清除出去,参见http://www.codeproject.com/dotnet/NeCoder03.asp ,但我们在什么情况下可以用他呢?
版本信息
鉴定

强名称可以阻止DLL Hell的出现,开发者们能够以同样的名字发布他们的程序集。拥有强名称的程序集具备唯一的标识且储存在不同的空间。
强名称第二个重要的特点是可以使我们确定代码是否是原始的版本。

实现过程如下:

原创粉丝点击