-6

私はC#を使用しています。ユーザーからテキストを取得し、それを整数のみとして検証できるようにしたいと考えています。String を 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」には先頭に 2 つのゼロがありますが、「345123」にはありません)。先頭のゼロを保持するには、数字のみの文字列を使用するのが最善の方法であると考えました。

4

1 に答える 1