由于指数大小有限,如何在 C# 中创建非对称密钥?

罗曼·P

我正在创建一个小软件来使用非对称密钥加密和解密数据。

问题是,我在 C# 中编码,即使我使用:

 BigInteger.Pow(BigIntenger myNumber, int myExponent);

指数是一个“int”,我的值对于一个 int 来说太大了。

只是为了快速解释并确保我没有犯任何错误,您必须使用大数字来使没有私钥的解密变得更加困难。

所以我有

  • N = P * Q
  • P和Q都是素数。
  • 1000 = (P-1) + (Q-1)
  • C是一个质数,M
  • 然后找到U:C×U+M×V=1

公钥(N,C)。

私钥(U,N)。

例如你想加密:“Bonjour !” 到 UTF8。

你将会拥有 :

B⇔66 / o⇔111 / n⇔110 / j⇔106 / o⇔111 / u⇔117 / r⇔114 /(空格)⇔32 /! ⇔33

然后将每个数字提高到 C 和模 N 的幂。

例如:valueOfB = (66^C)%N。

现在您的消息已加密。

如果你想解密它,你必须将每个值乘以指数 U 和模 N。

例如:(valueOfB^U)%N

所以我只有在使用小数字时才能这样做,因为我会有一个适合“int”的小 U 值,但它不安全,我怎么能用像 BigInteger 而不是 int 这样的大 U 来做到这一点?

巴顿杰斯

BigInteger.Pow BigInteger 将是一个非常复杂的数字。

二进制乘法具有以下特性:(粗略地说)将一个n-bit 数乘以一个m-bit 数会产生一个近似(n+m)-bit 的答案。

10 * 4096 = 0b1010 * 0b1_0000_0000_0000  (4 bits, 13 bits)
40960 = 0b1010_0000_0000_0000 (16 bits)

16 * 4096 = 0b1_0000 * 0b1_0000_0000_0000  (5 bits, 13 bits)
65536 = 0b1_0000_0000_0000_0000 (17 bits)

15 * 4095 = 0b1111 * 0b1111_1111_1111 (4 bits, 12 bits)
61425 = 0b1110_1111_1111_0001 (16 bits)

由于求幂是重复乘法,乘法是重复加法,我们可以看到,将 1024 位数字进行 512 位数字的幂将产生 1024*512 位(524288 位,65536 字节)领域的答案.

但随后您将使用模数运算对其进行跟进,使其回到 1024 位数字的领域。真是太浪费了。

值得庆幸的是,存在用于进行有效模幂运算的算法加倍感谢您,.NET 继续为您编写。

你要找的是

valueOfB = BigInteger.ModPow(66, U, N);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么非对称密钥更安全?

来自分类Dev

如何使用“ SecItemAdd”在OS X中存储对称密钥?

来自分类Dev

非对称密码-明文大小错误

来自分类Dev

在Shiny中创建涉及行和列的非对称布局

来自分类Dev

如何在css中显示有限的文本

来自分类Dev

如何在Java PKCS12密钥库中存储对称密钥

来自分类Dev

在C#中创建我的对称密钥

来自分类Dev

如何确定OpenPGP加密是对称还是非对称?

来自分类Dev

在C#中非对称地验证JWT

来自分类Dev

是否可以在SQL Server 2014中为.NET框架程序集创建非对称密钥?

来自分类Dev

8192 NodeJS请求中的数据大小有限

来自分类Dev

如何删除numpy数组中的非对称对?

来自分类Dev

如何在C ++中获得(无序)集合差异或对称差异?

来自分类Dev

如何在uuid python中获取有限的数字?

来自分类Dev

如何在Graphviz中创建对称边?

来自分类Dev

非对称密码-明文大小错误

来自分类Dev

如何在Android上创建非对称布局

来自分类Dev

为什么MBR分区中的硬盘大小有限制?

来自分类Dev

SSH密钥与用于其他目的的非对称密钥有何不同?

来自分类Dev

如何在Java中以非对称加密生成密钥对?

来自分类Dev

将非对称密钥容器存储在负载平衡的云环境中

来自分类Dev

考虑到有限的RAM空间,如何在C中声明和使用大小为[16] [256]的二维int数组?

来自分类Dev

如何不依靠已安装的密钥环等在命令行上进行非对称加密?

来自分类Dev

如何在Android Keystore中存储对称密钥

来自分类Dev

从 jPBC 保存和加载非对称密钥

来自分类Dev

如何在 SNMP4J 中使用非对称密钥或证书身份验证?

来自分类Dev

如何在 C 中为简单的 XOR 密码创建密钥流生成器?

来自分类Dev

如何在 Datepicker 布局中显示有限的年数?

来自分类Dev

C 上信封的 EVP 非对称加密和解密

Related 相关文章

  1. 1

    为什么非对称密钥更安全?

  2. 2

    如何使用“ SecItemAdd”在OS X中存储对称密钥?

  3. 3

    非对称密码-明文大小错误

  4. 4

    在Shiny中创建涉及行和列的非对称布局

  5. 5

    如何在css中显示有限的文本

  6. 6

    如何在Java PKCS12密钥库中存储对称密钥

  7. 7

    在C#中创建我的对称密钥

  8. 8

    如何确定OpenPGP加密是对称还是非对称?

  9. 9

    在C#中非对称地验证JWT

  10. 10

    是否可以在SQL Server 2014中为.NET框架程序集创建非对称密钥?

  11. 11

    8192 NodeJS请求中的数据大小有限

  12. 12

    如何删除numpy数组中的非对称对?

  13. 13

    如何在C ++中获得(无序)集合差异或对称差异?

  14. 14

    如何在uuid python中获取有限的数字?

  15. 15

    如何在Graphviz中创建对称边?

  16. 16

    非对称密码-明文大小错误

  17. 17

    如何在Android上创建非对称布局

  18. 18

    为什么MBR分区中的硬盘大小有限制?

  19. 19

    SSH密钥与用于其他目的的非对称密钥有何不同?

  20. 20

    如何在Java中以非对称加密生成密钥对?

  21. 21

    将非对称密钥容器存储在负载平衡的云环境中

  22. 22

    考虑到有限的RAM空间,如何在C中声明和使用大小为[16] [256]的二维int数组?

  23. 23

    如何不依靠已安装的密钥环等在命令行上进行非对称加密?

  24. 24

    如何在Android Keystore中存储对称密钥

  25. 25

    从 jPBC 保存和加载非对称密钥

  26. 26

    如何在 SNMP4J 中使用非对称密钥或证书身份验证?

  27. 27

    如何在 C 中为简单的 XOR 密码创建密钥流生成器?

  28. 28

    如何在 Datepicker 布局中显示有限的年数?

  29. 29

    C 上信封的 EVP 非对称加密和解密

热门标签

归档