• ベストアンサー

文字列を数字に変換する暗号化方式

与えられた文字列を、可変長 ( 6 ~ 10 桁程度 ) のアラビア数字に変換するような暗号化方式やハッシュ関数を探しています。 あるいは、出力結果が数字で、名前が付いている方式ならば、それに近いものでも構いません。 どなたかご存知の方はいらっしゃらないでしょうか。 ご回答よろしくお願い致します。

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

  • ベストアンサー
回答No.1

md5の16進数を10進表現にするとかなり大きくなりそうですね。 crc32だと10進数で10桁のようです。crc16だと5桁です。 crcはソースも公開されてるし、簡単なので、桁を小さくすることも 簡単だと思いますよ。

_--_--_-_-
質問者

お礼

ハッシュ値を 10 進整数に直すという方法もありますね。 CRC というのは巡回冗長検査のことですか。初めて知りました。 是非とも参考にさせて頂きます。 ご回答有難うございました。

_--_--_-_-
質問者

補足

申し訳ありません。1 つ質問を訂正させて頂きます。 質問文では 「 アラビア数字 」 と書きましたが、そうではなく、負の数を含む「 整数 」 に変換する方式を探しています。 また、桁数の目安として 6 ~ 10 桁程度と書きましたが、8 ~ 10 桁程度のりです。 引き続き、ご回答お待ちしております。

その他の回答 (2)

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.3

java であれば http://java.sun.com/javase/6/docs/api/java/util/zip/CRC32.html C であれば RFC 2083 にサンプルコードがあります。 http://www.ietf.org/rfc/rfc2083.txt Perl であれば以下のサイトが参考になるかもしれません。 http://multix.jp/cgi-bin/cdiary2/2003-04-05.dml.html

_--_--_-_-
質問者

お礼

大変詳しいご回答ありがとうございます。 これで解決しました。早速使ってみます。

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

言語は何ですか? 可逆性は必要ですか? なんちゃって関数でも可?

_--_--_-_-
質問者

お礼

ANo.1 の方の補足欄に書いた内容に誤字がありました。 > 8 ~ 10 桁程度のりです。 は、 > 8 ~ 10 桁程度の誤りです。 の誤りです。 再度訂正してお詫び申し上げます。

_--_--_-_-
質問者

補足

ご回答有難うございます。 補足させて頂きます。 言語は何でも構いません。 ただ、私はプログラミングに関して全くの素人なので、できれば C, Java, Perl あたりですと幸いです。 可逆性は特に必要ありません。可逆でも、不可逆でも構いません。 なんちゃって関数というのは、オリジナルの関数という意味でしょうか ? 誠に勝手ながら、一般に公開されているようなアルゴリズムをお教え頂きたいです。