gpt4 book ai didi

c# - 加密和解密一个 19 位长的 BigInteger

转载 作者:行者123 更新时间:2023-11-30 22:19:38 26 4
gpt4 key购买 nike

如何获取最长 19 位的 BigInteger 并使用以下规则对其进行加密:

  • 结果必须仅基于数字和小写英文字母。
  • 所有输出必须与任何输入具有相同的长度。长度必须在 11 到 16 个字符之间,具体取决于您的方法,但对于所有可能的输入都应保持一致
  • 没有简单的模式。例如,如果您加密 000...1 和 000...2,结果应该看起来完全不同。
  • 完全没有碰撞
  • 应该能够解密回原来的 BigInteger。

我尝试过的事情

  • 获取原始数字,通过某个键对其进行异或,将其乘以一个因子并将其转换为基数 36 的字符串。该因子的目的是扩大范围,因此不会有太多的 0 填充。该因子必须介于 1 到 36^16/10^19 之间。这种方法的问题是 a) 它不够“安全”,b) 接近的数字有非常相似的结果。

  • This answer.然而,结果往往太短或太长,之前使用的因子方法在这里不起作用。

最佳答案

19 位数字略小于 64 位,因此您可以简单地使用 ECB 模式下的 TDEA 等 8 字节分组密码来加密 BigInteger 值。首先获取 BigInteger 的默认 64 位编码,然后使用 key 加密,最后进行 base 36 编码。结果将是少于 16 个字符的几个字符,但您始终可以填充任何值。

请注意,如果您对相同的值加密两次,您将得到相同的结果,因此在这方面,密文确实会泄露一些有关纯文本的信息。

关于c# - 加密和解密一个 19 位长的 BigInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com