C# 带SHA1的OAEP和带BouncyCastle的MGF1?
我正在尝试使用.NET Framework 2.0上的BouncyCastle,用c#实现RSA/ECB/OAEPwithSHA1和MGF1padding 我遇到了这样的问题: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
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));
}