我使用强名工具创建了一对密匙test.snk,publicKey.snk,存放在C盘,然后我新建了个类库项目 在它的AssemblyInfo.cs 中加了[assembly: AssemblyKeyFile("c:\\test.snk")],然后编译成一个dll ,然后创建了一个Winform项目引用上面的dll,没有给这个Winform授权,应该是不能使用dll中的方法的啊?可是现在任然能访问方法,到底怎么回事啊?谢谢解答

解决方案 »

  1.   

    没明白,为什么要给Winform授权啊,强名称的程序集就是这样用的,不需要授权什么的。
      

  2.   

    为什么要给Winform授权呢,强名称的程序集就是这么用的,不需要再授什么权
      

  3.   

    不是说使用了强名 引用此dll的项目是不能使用它的吗?
      

  4.   

    同样的 换了路径 引用的项目任然可以使用此dll
      

  5.   

    强名称不是做这个用的,强名称只是为了对你的DLL签名~~拥有公钥标记的程序集称为强名称程序集,强名称程序集可以防篡改;可以安装到GAC中,为多个程序集所共享;还可以实施版本策略(不同版本的强名称程序集被认为是不同的程序集)。而公钥标记为空的程序集只能存在于所引用的程序集的目录以及子目录中,也无法实施版本策略(引用它的程序集会忽略版本号)加上强命名并不意味着你的DLL就只有你的机器,或者使用你的SNK的程序可以用
      

  6.   

    要在你的DLL前面加上[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey = 公钥信息]
    这样你的winform就不能用了除非在winform加上[assembly: AssemblyKeyFile("  。snk")].
    你试试看
      

  7.   

    顺便问一下
    我在网上看了一段MD5加密的
         //MD5加密  
            public string MD5Encrypt(string pToEncrypt, string sKey)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
                byte[] key = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0,sKey.Length));
                byte[] iv = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0, sKey.Length));
                 MessageBox.Show(des.ValidKeySize(key.Length).ToString());
          
                des.Key= key;
              
                des.IV = iv; 
                des.BlockSize = des.Key.Length;
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                StringBuilder ret = new StringBuilder();
                foreach (byte b in ms.ToArray())
                {
                    ret.AppendFormat("{0:X2}", b);
                }
                ret.ToString();
                return ret.ToString();
            }使用的时候为什么老是报错:指定键的大小对于此算法无效