将字符串(仅限数字)加密到另一个字符串(仅限数字)

时间:2013-08-06 15:59:02

标签: c# .net encryption

我正在使用C#。我希望能够从用户处获取文本,然后将其验证为仅整数。如果我选择将String转换为int / long,则会丢失前导零。我想保持领先的零。我的计划是将此用户输入文本保留为String。

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

示例输入:“00123123678954”

示例输出(加密后):“0129021398013”

一些要求:

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

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

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

对于那些感兴趣的人,我目前正在做以下事情(我在这台机器上没有代码......我稍后会提出来):

  1. 以String INPUT接收用户输入。
  2. 将INPUT转换为ulong(UInput)。
  3. 使用简单加密创建密码ulong - > cipherU =(UInput + 1)^ SECRET_KEY
  4. 将cipherU存储在数据库中。
  5. 问题是我在第1步和第2步之间失去了前导零。我不想丢失这些前导零(例如“00123”在开头有两个零,而“345123”没有)。我认为使用只有数字的字符串是保持前导零的最佳方法。

1 个答案:

答案 0 :(得分:2)

您可以使用AES Crypto Service Provider,然后将输出存储为字节数组输出的二进制字符串表示。

即,12345可能会加密为“1001001010110001”