我正在使用 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
对于那些感兴趣的人,我目前正在执行以下操作(我在这台机器上没有代码......我稍后会放上去):
- 接收用户输入作为字符串输入。
- 将 INPUT 转换为 ulong (UInput)。
- 使用简单加密创建密码 ulong -> cipherU = (UInput + 1) ^ SECRET_KEY
- 将 cipherU 存储在数据库中。
问题是我在第 1 步和第 2 步之间丢失了前导零。我不想丢失这些前导零(例如,“00123”在开头有两个零,而“345123”没有)。我认为使用只有数字的字符串是保留前导零的最佳方法。