有很多關於使用BouncyCastle進行RSA加密和解密的主題,但是我遇到了一些意外的行爲。C#BouncyCastle RSA加密和解密
我試圖加密64點字節的數據使用大小爲64字節
的私鑰我計算的RSA加密,阻止如下:
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引擎是處於加密模式還是解密模式而不同。 –
到目前爲止你做過這些了嗎?因爲我遇到了同樣的問題,可能需要您的建議:) – Roylee