みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

スパムメールなどで、よく

解除はこちら⇒ http://aaaaaaaa.jp/?az

のように書かれています。

これはおそらく「az」を内部的に顧客ID「12345」などに変換していると思うのです。

顧客IDの数字を、アルファベットにして、数字を隠してしまう方法をご存知ありませんでしょうか?

アスキーコードに変換する方法は考えたのですが、たとえば27の場合にはz(26)+a(1)になります。

もし200ならzzzzzzzrになり、おかしな変換になってしまいます。

よろしくお願いいたします。

投稿日時 - 2007-11-14 22:16:16

QNo.3518593

すぐに回答ほしいです

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

顧客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

投稿日時 - 2007-11-15 15:39:10

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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パターンしかありませんから。

投稿日時 - 2007-11-15 13:03:57

ANo.1

> 200ならzzzzzzzrになり、おかしな変換になってしまいます。

この仕様がおかしいと思われた理由は何でしょうか?
200からzzzzzzzrへの変換、あるいはzzzzzzzrから200への変換が
一意に行なえるのであれば、
決しておかしくないのではありませんか?

もし、zzzzzzzrから200を類推することが簡単にできるかもしれない
点を危惧されているのであれば、文字に変換する際、
何文字目かによって重み付けを変える、などの方法があると思います。

投稿日時 - 2007-11-14 23:12:22

あなたにオススメの質問