为密码学编写垫片

时间:2018-07-23 16:50:53

标签: c# .net cryptography

我需要伪造SHA1Cng.ComputeHash()(以及System.Security.Cryptography各个类中的许多其他函数)。

我创建了测试项目,引用了其中的主项目,为其生成了伪造品,还为System生成了伪造品,这给了我mscorlib.fakes(Cryptograhy在哪里)。我添加了以下几行:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration>
    <Remove FullName="System.Runtime.CompilerServices.ITuple"/>
  </StubGeneration>
  <ShimGeneration>
    <Add FullName="System.Security.Cryptography"/>
  </ShimGeneration>
</Fakes>

由于某些原因,我得到很多错误:

  

'CryptoStream'不包含带有4个参数的构造函数(.. \ Debug \ Fakes \ m \ f.csproj)

     

'Rfc2898DeriveBytes'不包含带有4个参数的构造函数(.. \ Debug \ Fakes \ m \ f.csproj)

     

...

1 个答案:

答案 0 :(得分:0)

我能够撤消Fakes文件,只包含我们需要的文件。类似于以下内容:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration>
    <Clear/>
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.IO.FileSystemInfo"/>
    <Add FullName="System.IO.Path"/>
    <Add FullName="System.DateTime!" />
  </ShimGeneration>
</Fakes>

不幸的是,这是反复试验的结果。我们将尽快放弃MS Fakes。似乎微软已经放弃了它。