2
我是密碼學的新手,所以也許我對這裏會發生什麼感到困惑。我從一個32字節的消息摘要開始,並嘗試使用我的私鑰對其進行簽名。 RSA.SignHash的輸出是128字節。我期待着32RSACryptoServiceProvider.SignHash與SHA256返回128字節而不是32?
static private byte[] RSAHashAndSignData(byte[] data, RSAParameters privateKey)
{
byte[] signedHash;
//Create a new instance of RSACryptoServiceProvider.
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
//Import the public key
RSA.ImportParameters(privateKey);
//Encrypt the passed byte array
var sha = SHA256Managed.Create();
var digest = sha.ComputeHash(data);
signedHash = RSA.SignHash(digest, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
return signedHash;
}
謝謝,這使得噸感。 –
準確地說,簽名的大小與字節的模數完全相同,不管填充如何(除了可能用於教科書RSA,其中輸出是小於模數的數字,而不是八位字符串)。根據定義,模數與RSA的密鑰大小相同。 –
如果您有選擇,也請使用RSA-2048或更高版本。行業已經從1024位密鑰轉移。 – vcsjones