C#BouncyCastle RSA加密和解密
有很多关于使用BouncyCastle进行RSA加密和解密的主题,但是我遇到了一些意想不到的行为 我正在尝试使用大小为64字节的私钥加密64字节的数据块 我计算RSA加密如下:C#BouncyCastle RSA加密和解密,c#,encryption,rsa,bouncycastle,C#,Encryption,Rsa,Bouncycastle,有很多关于使用BouncyCastle进行RSA加密和解密的主题,但是我遇到了一些意想不到的行为 我正在尝试使用大小为64字节的私钥加密64字节的数据块 我计算RSA加密如下: public byte[] Encrypt(byte[] data, AsymmetricKeyParameter key) { var engine = new RsaEngine(); engine.Init(true, key); var blockSize = engine.GetInpu
public byte[] Encrypt(byte[] data, AsymmetricKeyParameter key)
{
var engine = new RsaEngine();
engine.Init(true, key);
var blockSize = engine.GetInputBlockSize();
return engine.ProcessBlock(data, 0, blockSize );
}
我使用公钥计算解密,如下所示
public byte[] Decrypt(byte[] data, AsymmetricKeyParameter key)
{
var engine = new RsaEngine();
engine.Init(false, key);
var blockSize = engine.GetInputBlockSize();
return engine.ProcessBlock(data, 0, blockSize );
}
我发现,当我使用64字节私钥加密我的64位数据时,我会得到一个64字节加密的数据块
但是,当我使用64字节公钥对64字节数组进行解码时,我会返回一个大小为62字节的数据块。奇怪的是,62字节数组中包含的值等于64字节原始数组(预加密)的值,但解码数组缺少原始数据的第一个索引和最终索引
我尝试过使用不同的键和不同的数据集,但同样的事情发生了
我一定是做错了什么,但我看不出来
干杯。你把基本概念搞错了
你应该后退一步,描述一下你真正想要实现的目标,这样我们才能找到一个适合你需要的方案。只有在这之后,您才应该担心如何实现它。请不要键入代码。复制并粘贴精确的代码,因为上面的代码甚至没有编译。这里有一个提示:
engine.GetInputBlockSize()的值是多少代码>是什么?这是另一个提示。根据RSA引擎处于加密模式还是解密模式,该值会有所不同。到目前为止,您是否已经这样做了?因为我遇到了同样的问题,可能需要您的建议:)我同意您的说法,但是:1。)我正在使用的接口需要使用512位RSA密钥。2.)我使用的接口执行公钥解密,因此需要私钥加密。3.)使用的填充在加密之前预先计算,因为使用了自定义填充方案。