• ベストアンサー

数値を隠す方法 12345⇒azなど

スパムメールなどで、よく 解除はこちら⇒ http://aaaaaaaa.jp/?az のように書かれています。 これはおそらく「az」を内部的に顧客ID「12345」などに変換していると思うのです。 顧客IDの数字を、アルファベットにして、数字を隠してしまう方法をご存知ありませんでしょうか? アスキーコードに変換する方法は考えたのですが、たとえば27の場合にはz(26)+a(1)になります。 もし200ならzzzzzzzrになり、おかしな変換になってしまいます。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • danmarino
  • ベストアンサー率63% (26/41)
回答No.3

顧客IDが直接見えなければいい、という前提に基づくとIDを何らかの法則に基づいて変換する以外にも方法があるような気がします。 とても簡単な方法ですが、顧客データベースに、顧客IDと結びつけたランダムな文字列を入れておけば上記前提はクリアできるのではないでしょうか? 例) 顧客ID 文字列 12345 a8bmGjhd 98765 g7Fjgtd8 としておけば「http://aaaaaaaa.jp/?a8bmGjhd」のように呼び出すことで顧客ID=12345と結びつけることができます。 完全に自動化したいのであれば、Blowfishのような暗号化アルゴリズムを使ってみるのもいいのではないでしょうか? http://www.ss.iij4u.or.jp/~somali/web/_blowfish.html

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

回答ANo.1のとおり,計算で az→12345 を求めなくとも対応表を使えば,文字列と顧客IDとの相互変換ができます。計算で求めていませんから類推も困難です。 たったいまキーボードを適当に叩いて生み出したランダム文字列がこちら。 so 14676 sk 24979 xg 31994 eu 64976 ow 84673 ただし当然ですが。 5桁の10進数(00000~99999)全部を,2桁の英小文字(aa~zz)に対応づけることはできません。aa~zz の総数は 26文字×26文字=676パターンしかありませんから。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> 200ならzzzzzzzrになり、おかしな変換になってしまいます。 この仕様がおかしいと思われた理由は何でしょうか? 200からzzzzzzzrへの変換、あるいはzzzzzzzrから200への変換が 一意に行なえるのであれば、 決しておかしくないのではありませんか? もし、zzzzzzzrから200を類推することが簡単にできるかもしれない 点を危惧されているのであれば、文字に変換する際、 何文字目かによって重み付けを変える、などの方法があると思います。

関連するQ&A