当前位置: 首页 > 知识库问答 >
问题:

C#BouncyCastle RSA加解密

孟正志
2023-03-14
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 );
}

干杯。

共有1个答案

满子实
2023-03-14

你把基本概念搞错了。

  1. 512位RSA非常弱,请至少使用1024位
  2. 私钥不用于加密。是用来解密和签名的。公钥用于加密和验证。
  3. 填充对于RSA安全性至关重要。典型的填充方案需要几十个字节。
  4. 即使使用教科书上的RSA,RSA也只能对小于模数的值工作。因此,512位模数不能操作任意64字节/512位值。但仅限于511位。

你应该后退一步,描述你实际上想要实现的目标,这样我们就可以找到一个符合你需要的方案。只有在那之后,你才应该担心它的实施。

 类似资料:
  • 我想知道如何限制加密的ASCII范围从32-126。 这个是用来解密的 我的加密工作得很好(当我引用解密函数时),但我的解密并不像它应该的那样工作。 额外注意:我们只需要在编码时进行右移,给出一个字符串供整个程序加密和解密(“这是C++”) 注意:在添加更多代码描述的过程中

  • 我试图解密C#加密数据在Java没有成功。我用的是128位密钥 这是java代码: 你知道会出什么问题吗? 谢谢 使现代化 对不起,我太笨了,我忘了写实际的错误消息。这是: 线程“main”javax中出现异常。加密。BadPaddingException:组织中的填充块已损坏。弹跳船舱。jcajce。供应商。对称的。util。基本分组密码。javax上的engineDoFinal(未知源代码)。

  • 我试图用C#加密一些(cookie)数据,然后用PHP解密。我选择使用Rijndael加密。我几乎让它工作,除了只有一部分的文本被解密!我从这个例子开始工作:用C#解密PHP加密的字符串 这是我正在加密的文本(JSON)(删除敏感信息): 所以我登录到 C# 应用程序,该应用程序从存储的密钥和 IV 创建/编码 cookie,然后重定向到应该解密/读取 cookie 的 PHP 应用程序。当我解密

  • 问题内容: 我正在尝试在C#中加密某些(cookie)数据,然后在PHP中对其进行解密。我选择使用Rijndael加密。我几乎可以正常工作了,只是只有部分文本被解密了! 这是我正在加密的文本(JSON)(已删除敏感信息): 因此,我登录到C#应用程序,该应用程序从存储的Key和IV创建/编码cookie,然后重定向到应该解密/读取cookie的PHP应用程序。当我解密cookie时,它会像这样显示

  • 此刻,我的java类可以加密和解密他自己的数据。我的C#也可以做同样的事情。问题是,我的C#代码不能解密java先前加密的内容。我100%确定他们有相同的密钥(打印了一个日志,所以比较和它是一样的)。我在java和C#中的加密似乎有些不同。 下面是我在尝试用C#解密之前由Java加密的内容时遇到的错误: JAVA代码:

  • 本文向大家介绍C# RSA分段加解密实现方法详解,包括了C# RSA分段加解密实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C# RSA分段加解密实现方法。分享给大家供大家参考,具体如下: RSA加解密: 1024位的证书,加密时最大支持117个字节,解密时为128; 2048位的证书,加密时最大支持245个字节,解密时为256。 加密时支持的最大字节数:证书位数/8 -11