首页
论坛
课程
招聘
[求助]一个有关.net的小问题
2009-10-27 13:28 3248

[求助]一个有关.net的小问题

2009-10-27 13:28
3248
ReFlector中这个钥匙图标是什么意思


好像是接口的意思,就是调用外部文件,不知是不是这样

如果是这样那怎么判断调用的代码在哪 因为关键代码就在这个a中

[招生]科锐逆向工程师培训46期预科班将于 2023年02月09日 正式开班

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 312
活跃值: 活跃值 (29)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
grassdrago 活跃值 3 2009-10-27 14:28
2
0
是接口,但不是调用外部文件。
下在是msdn的解释:
接口只包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。

下面举个简单例子,我们想写个加解密字符串儿的方法,如下模样:
string Encrypt(string inString);//加密方法
string Decrypt(string inString);//解密方法

可是,我们有时候想用MD5加密,有时想用sha1加密或des加解密.

于是写了一个接口myInterface并写了三个类都继承了此接口class_mymd5、class_mysha1、class_mydes。如下:

interface myInterface
{
  string Encrypt(string inString);//加密方法
 string Decrypt(string inString);//解密方法
}
class class_mydes: myInterface
{
   public string Encrypt(string inString)//加密方法
  {
      //实现串儿的des加密
        return "加密后的串儿"; 
   }
   public string Decrypt(string inString)//解密方法
  {
      //实现解密
    return "解密后的串儿";
   }
}
class class_mymd5: myInterface
{
   public string Encrypt(string inString)//加密方法
  {
      //实现串儿的md5加密
        return "加密后的串儿"; 
   }
 public string Decrypt(string inString)//解密方法
  {
      //没法解密
    return string.Empty;
   }
}

class class_mysha1: myInterface
{
...略
}
使用时可以:
  myInterface aa=new class_mymd5() as myInterface;
   string bb=aa.Encrypt("我的口令"); //得到md5加密后的串儿.
   
   aa=new class_mysha1() as myInterface;
    bb=aa.Encrypt("我的口令"); //得到sha1加密后的串儿.
   
    aa=new class_mydes() as myInterface;
    bb=aa.Encrypt("我的口令"); //得到des加密后的串儿.

接口的好处在于,可以灵活扩充出其它实现来。可以把它看作是一种行为的规范,子类必须实现它指定的行为,楼主可以有限地参照一下抽象类的作用。
雪    币: 290
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
芳草碧连 活跃值 2009-10-27 16:38
3
0
明白了 非常感谢你的详细解释  对这玩意儿还不熟 研究ing
雪    币: 290
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
芳草碧连 活跃值 2009-10-27 18:27
4
0
已经找到验证代码
调用的是RSAPKCS1SignatureDeformatter.VerifySignature 方法 (Byte[], Byte[])
来验证指定数据的 RSAPKCS#1 签名

private bool a(string A_0)
{
bool flag;
using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
{
try
{
provider.FromXmlString(this.u);
RSAPKCS1SignatureDeformatter deformatter = new RSAPKCS1SignatureDeformatter(provider);
deformatter.SetHashAlgorithm("SHA1");
byte[] rgbSignature = Convert.FromBase64String(A_0.Trim()); //注:我们输入的注册码
byte[] rgbHash = new SHA1Managed().ComputeHash(Encoding.ASCII.GetBytes(this.t.Trim()));
if (deformatter.VerifySignature(rgbHash, rgbSignature))
{
return true;
}
flag = false;
}
catch
{
flag = false;
}
}
return flag;
}


剩下的就是解密 求rgbSignature。我是通过调用RSAFormatter.CreateSignature来求 始终不行 不知为何……
被这些微软提供的加解密算法搞晕了
游客
登录 | 注册 方可回帖
返回