Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带SHA1的OAEP和带BouncyCastle的MGF1?_C#_.net 2.0 - Fatal编程技术网

C# 带SHA1的OAEP和带BouncyCastle的MGF1?

C# 带SHA1的OAEP和带BouncyCastle的MGF1?,c#,.net-2.0,C#,.net 2.0,我正在尝试使用.NET Framework 2.0上的BouncyCastle,用c#实现RSA/ECB/OAEPwithSHA1和MGF1padding 我遇到了这样的问题: IAsymmetricBlockCipher engine=new-OaepEncoding(new-RsaEngine(),new-Sha1Digest(),new-Sha1Digest(),null); 使用(变量流=新的流阅读器(公钥)) { var pemReader=新的pemReader(流); var pe

我正在尝试使用.NET Framework 2.0上的BouncyCastle,用c#实现RSA/ECB/OAEPwithSHA1和MGF1padding

我遇到了这样的问题:

IAsymmetricBlockCipher engine=new-OaepEncoding(new-RsaEngine(),new-Sha1Digest(),new-Sha1Digest(),null);
使用(变量流=新的流阅读器(公钥))
{
var pemReader=新的pemReader(流);
var pemObj=pemReader.ReadObject();
var keyPair=(RsaKeyParameters)pemObj;
engine.Init(真,密钥对);
}
var message=“test”;
var data=Encoding.UTF8.GetBytes(消息);
var encrypted=engine.ProcessBlock(数据,0,数据.长度);
我的问题是,这等同于使用BouncyCastle和c的
RSA/ECB/OAEPha1和MGF1padding
,还是正确的方法?

我也对这里的参数表示怀疑:

IAsymmetricBlockCipher engine=new-OaepEncoding(new-RsaEngine(),new-Sha1Digest(),new-Sha1Digest(),null);
我找不到方法将第二个
Sha1Digest
定义为MGF1或其他内容。

看一看

它通过一个名为CipherUtilities的泛型类中的IBufferedCipher解决了这个问题,他这样做(第302行):


请注意,c是一个IBufferedCipher

,它似乎可以工作,但与ECB没有等效性。您能否找到它将这些字符串转换为相关类型的代码,以便我可以确定?如果我从“无”更改为ECB,它确实可以加密,但我不愿意它是否被正确转换。清除这些,赏金完全是你的!;)谢谢,但不是我的代码,请看Gost3411Digest,第159行。我不是专家,但可能是你需要的
c = CipherUtilities.GetCipher("RSA/NONE/OAEPWithSHA1AndMGF1Padding");
c.Init(false, privKey);
outBytes = c.DoFinal(outBytes);
if (!AreEqual(outBytes, input))
{
    Fail("OAEP test failed on decrypt expected " + Hex.ToHexString(input) + " got " + Hex.ToHexString(outBytes));
}