将字符串(只包含数字)加密为另一个字符串(只含数字)

本文关键字:数字 字符串 另一个 加密 包含 | 更新日期: 2023-09-27 18:26:34

我正在使用C#。我希望能够从用户那里获取文本,然后仅将其作为整数进行验证。如果我选择将字符串转换为int/long,我将丢失前导零。我想保留前导零。我的计划是将此用户输入文本保留为字符串。

我想加密这个字符串(只有数字),这样结果密文也是一个数字字符串在C#中有一种简单的方法可以做到这一点吗?有可能做到这一点吗?有其他选择吗?如果可能的话,我可以举几个例子吗?

示例输入:"00123123678954"

示例输出(加密后):"0129021398013"

一些要求:

  • 字符串长度可以在12-19之间变化(此长度可能未来的变化)。我想要对称加密。我们可以保留通过使用单个密钥和XOR函数(用于现在我确实想改进它)。我更担心格式保存以及如何做到这一点。

  • 数字字符串表示0,1,2,3,4,5,6,7,8,9的字符串,或这些连接在一起的任何组合。

  • 这个问题指的是保留格式的加密。http://en.wikipedia.org/wiki/Format-preserving_encryption

对于那些感兴趣的人,我目前正在做以下工作(我在这台机器上没有代码…我稍后会把它放上去):

  1. 以字符串input的形式接收用户输入
  2. 将INPUT转换为ulong(UInput)
  3. 使用简单加密创建密码ulong->cipherU=(UInput+1)^SECRET_KEY
  4. 将cipherU存储在数据库中

问题是我在第1步和第2步之间失去了前导零。我不想丢失这些前导零(例如"00123"在开头有两个零,而"345123"没有)。我认为使用只有数字的字符串是保留前导零的最佳方式。

将字符串(只包含数字)加密为另一个字符串(只含数字)

您可以使用AES加密服务提供程序,然后将输出存储为字节数组输出的二进制字符串表示。

I.e 12345可能加密到"1001001010110001"