首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RSACryptoServiceProvider实现RSA算法

用RSACryptoServiceProvider实现RSA算法
EN

Stack Overflow用户
提问于 2014-10-16 06:32:47
回答 1查看 417关注 0票数 0

我对理解RSACryptoServiceProvider类有一点困难……我应该加密一条消息

长度为256位,具有密钥

,它也是256位长。不应该将输出

也是256位长吗?下面是我的代码:

代码语言:javascript
复制
//key generation

byte[] bytes = new byte[32];
var rng = new RNGCryptoServiceProvider();
rng.GetBytes(bytes);
k2 = bytes;

//encryption function

static public byte[] Encryption(byte[] Data, RSAParameters RSAKey, bool DoOAEPPadding)
{  
    byte[] encryptedData;
    using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
    {
        RSA.ImportParameters(RSAKey);
        encryptedData = RSA.Encrypt(Data, DoOAEPPadding);
    }
    return encryptedData;
}

然后最终计算出

代码语言:javascript
复制
ciphertext = Encryption(k2, RSA.ExportParameters(false), false);

生成byte[128]密文,也就是1024位。我不应该得到byte[32]大小的密文吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-16 06:47:08

您似乎使用密钥k2作为RSA加密的数据。这是可以的,如果你想,例如,包装一个256位AES密钥使用RSA。但是您的RSA密钥是第二个参数,而不是第一个参数。

然后填充k2中的数据(根据较旧的RSAV1.5方案),之后将使用PKCS#1密钥的公共指数和模数执行模幂运算。RSA密钥的模数决定了密钥大小。这种模幂运算将始终产生介于0和模数- 1之间的结果。但是,结果总是以字节为单位向左填充密钥大小(使用名为I2OSP的函数)。

因此,您的结果似乎是1024位,这意味着您的RSA密钥对也是1024位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26393249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档