「MD5」を含む日記 RSS

はてなキーワード: MD5とは

2019-09-12

ISUCON9予選のレギュレーションバグについて

ことの顛末

ISUCON 9 参加記 - kyuridenamidaのブログ

ISUCON9 レギュレーション違反の対応について [追記あり] : ISUCON公式Blog

TL;DR

本文

そもそもレギュレーション違反なのか問題

パスワードを平文で保存すること禁止する」というレギュレーションに対して、「パスワード+#」が違反したと見なされたのが最初見解

ここでいう「平文」が出てくる文脈は、初期実装のbcryptからも明らかなように暗号理論文脈だと考えられる。ここに疑念を挟む人はまずいないだろう。

そして暗号理論文脈で言う「平文」とは明確な定義があり、今回で言えば「パスワード文字列のもの」だ。

まりパスワード+#」は「平文」ではない。

これは学問的には異論余地がないので、このことを知らなかった人や、どっちもどっち論に立っていた人は、素直にごめんなさいすべきだ。

たとえば以下のツイート主が主張するような「原理的に元に戻せるのは全部平文」なんて定義暗号理論では受け入れられていない。複合可能なら全部平文なの?


もう話はここで終わってもいいのだが、まだまだ論点があるので続ける。

平文と同程度の強度は実質平文なのでは問題

この立場に立っている人も結構いるように見かけたが、レギュレーションからそれが読み取れないので無理がある。

第一に、レギュレーションでは暗号強度に関して全く触れられていない。

第二に、OK暗号強度の線引きがあるのならベンチマークでチェックすべきだ。

特に後者は今回(自分の知る限り)誰も言っていなかった気がするが、セキュリティの側面も持たせるのなら仕組みで担保しなきゃダメだろう。

運営側が想定していたレギュレーションが、平文よりも高い暗号強度での保持であったとしても、そのことが明確にわか文章になっていないので、レギュレーション文言実装バグしか言いようがない。

そもそも効率化のためにセキュリティ犠牲にするのはどうなのよ問題
ウェブアプリケーションとしてありえない実装ダメでしょ問題

実はこの立場運営擁護していた人が一番多かった気がしてしまうのだが、見事にハシゴを外されてドンマイとしか言いようがない。

たとえば有名人だとこの人とか。


残念ながらISUCON運営公式の言説として、平文とまではいかなくても暗号強度を犠牲にすることは想定内であったことがアナウンスされている。

bcryptによる負荷の対処方法として、サーバを追加、軽量なハッシュ関数での代替、あるいは平文での保持を開発チームにおいて想定しましたが、現実問題として、パスワードなどの情報流出などの事件が発生しており、平文での格納は一般的に推奨されない実装方法だという認識を同時に持ちました。

ウェブアプリケーション開発者として、みたいなことを大上段に出されても、ISUCON現実ウェブサービスであれば許容できないようなハックを用いてでも高速化するコンテストである、という文脈は、それこそ過去ISUCON確立されてきたものなわけで、ISUCONを知らないのなら黙っといたほうがいい、としか言いようがない。

なお実サービスでは当然やらないことをやるのはどうよ、みたいな話を持ち出すと、今回おそらく運営脳内レギュレーションではMD5あたりもOKだったのでは、という辺りを考え出すと、やはりどこがラインなのか明確じゃないよねって話に結局なる。(2019年MD5を許す実サービスは流石にないよね?)

そこを明確にしたいなら文章化(脳内レギュレーション実装)をがんばるか、ベンチマークなどで担保するしかなかったという結論は変わらない。

それが出来ないなら何でもありになるのは当然の帰結だし、それを美学だとかプライドだとか個々人の価値観が大きく異なる概念で縛ろうとするのは、こと競技に関しては真摯姿勢ではない。

(たとえば大相撲のような競技でも、横綱が変化しちゃダメという美学に関して喧々諤々な議論が起きたりする)

運営はどうすべきだったか

今回は見逃して次回からルール文化をがんばる

王道はこれ。

脳内レギュレーションを明文化できていなかった、という反省を踏まえて次がんばるしかない。

今回は他チームから問い合わせがあったらしいが「平文」の定義をきちんと調べさえすれば、想定していた回答ではないが「パスワード+#」は平文ではないので今回のレギュレーション違反には当たらない、という結論を伝えるべきだったように思う。

運営側が求める最低限の強度の実装で追試験

現実的な落とし所はこっちだったかもしれない。おそらく該当チームも、これなら反発はしなかったんじゃないか

今回は競技中の質問に回答をしなかったという問題もあった。

まりこういうことを伝えたらどうだったか



今後のこと

まだ本戦があるんやで

ということで騒ぎは終わりにしたい、という気持ちに関しては多くの人の一致を見るはずだ。

一方で運営側の朝令暮改のような対応に不信感や疑問を持つ人が多いのも事実だと思う。

ボランティアでがんばってるんだから目を瞑ろう、という感情的意見もまあ分かる。お疲れ様だ。

たこれは個人的見解だが、特に今回の予選問題過去最高傑作と言っても過言ではないくらいよく出来ていると思うし、流通額をスコアとするビジネス上の目的意識させるというメッセージ性も素晴らしいと思うので、今回の一件を持って問題作扱いされてほしくない気持ちは正直ある。


でもきちんと総括しないで先に進んでも誰も幸せにならないのもまた事実だと思う。

ということで、運営側はレギュレーション文言バグっていたことをちゃんと認めて、該当チームに落ち度が全く無かったことを謝罪した上で、次に進んでほしい。

競技中に質問に答えなかったこと、参戦後ブログ根拠裁定をくだしたことも悪手だと思うが、それ以上に、「レギュレーション違反はなかった」ことをきちんと伝えて名誉回復してあげるのが一番の筋のはずだ。

2019-06-15

anond:20190615002729

警察官の嫁のツイートはっときますね!

幸せ家族になることを祈ってます😀

Mr87F®︎🤱みーさん

@Mr87F

から、5歳の長男おねしょに対して「なんでおねしょしたと思う?なぁ。説明してみろよ」と子供暴言を吐く夫。

何度も聞くし、そもそも子供おねしょ制御できる訳ないでしょ、やめなよ、と言うと

「はぁ?生意気言ってんじゃねーよ」とリモコン2つ投げられた。これ2回目。まじ離婚文字が浮かぶ

https://i.imgur.com/EDsUx4A.jpg

https://i.imgur.com/HY22vHL.jpg

https://i.imgur.com/Qz086kM.jpg

1.5万

件のリツイート

3万

件のいいね

Mr87F®︎🤱みーさん

@Mr87F

今回は暴力を振るわれてないですが、DV気質あります

しかも、最悪なことにうちの旦那職業は街を守る人ですよ。変なところで正義感だけ強く、どちらかというと成敗してやるってタイプから終わってます

証拠は保管しておきますありがとうございます

https://s.kyoto-np.jp/politics/article/20190614000180 👀

Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)

2018-08-24

anond:20180824020011

書き込みmd5とかでハッシュしてそのユーザーの直前の書き込み合致するなら弾けば良いだけなのに、はてなはそんなことすら出来んっていうリアル低脳からな……

2018-08-22

すごいものを見てしまったんだがこれは何だ

https://www.facebook.com/elisabeth2403

なんかAmazonアカウントメアドパスワード

クレカの番号を公開し続けてる

この人、MD5かいものクラックするツール

Amazonメアド登録されてるものかどうかを確かめツール

販売してる

なんだこれ 

2018-07-02

anond:20180702145715

MK5 とは、MD5 を5回繰り返す という意味じゃないですかね。

K=繰り返し

ソース中のコメントに「パスワードMK5ハッシュ値に変換」って書いてあった・・・

当然md5の誤字なのだがそこら中にmk5存在している・・・

変換にはmk5クラスのconvertメソッドを使ってやがる。

だんだんmk5っていうハッシュアルゴリズムがある気がしてきたじゃねえか!

2015-11-01

いい感じの動画紹介サイトを作って、高速化した話

作ったもの

大人向けのエンタメ動画キュレーションするサイトを作ってみました。

18歳未満の人はみちゃだめです

http://videovdo.com/

高速化の話

このサイトRailsで作ってherokuに乗せてみたんですが、いかんせん遅い。

もちろんheroku札束で叩けばいくらでも早くなるんだけどそんなに予算もないし、そもそもそんなお金あったらこんなことしてない。

なのでどうにかしてお金を掛けずにサイト高速化する方法を考えてたら1つアイデアが浮かんだのです。

それはサイト全体をCDNのCloudfrontに突っ込んでしまう事。

やり方

ルートドメインDNS設定のCNAMEで、Cloudfrontドメイン指定します。

そしてCloudfrontオリジンherokuドメイン指定する。

こうすることでCSSとか画像ファイルだけでなく、HTMLも含めて全部のファイルキャッシュすることができます

そしてCloudfrontの設定で、HTMLファイル10分とか1時間とか割と短めに設定して、

CSSとかJSとかは、Railsで作っているとMD5キャッシュが効いていて、勝手キャッシュ無効化されるので、

1か月とかを指定すればよい。

効果

効果としては、heroku単体でやるとHTMLファイルの応答が600msぐらいかかっていたのが、Cloudfrontキャッシュさせると60msぐらいで帰ってくる。

もう超早い。10倍速い。

あとgzip配信したいので、gemheroku-deflaterを入れる。

このgemはすごくて、herokuに乗っていると勝手gzip圧縮してくれる。

これによってCloudfrontの利用料を節約する。

料金

僕のサイト場合、このherokuサーバーから配信しているのは、HTMLCSSが1ファイルとあと画像が1つで合わせて10kBぐらいしかない。

こんだけだと、Cloudfrontの料金は100万PVでも1000円いかないぐらい。

heroku札束で叩くのと違って、従量課金なのであらかじめ高いお金を払っておく必要もないし、

100万PV1000円ならまあ割と現実的価格なので、当分の間はこれで運営していこうかと思う。

2014-06-13

UFJ推奨のセキュリティソフトが信頼できないんだけどこれどうすれば

MUFJのオンラインバンキングを申し込んでみたのだがそこでセキュリティソフトを推奨された。

 こいつだ。http://www.trusteer.com/ja/products/trusteer-rapport-for-online-banking-ja

残難ながらこれのダウンロードリンクhttpsでは提供されていない。賢明な諸兄はご存知の通りhttps提供されていないソフトは信頼しないことが大原則だ。

ファイルhttps提供されない場合https提供されているMD5情報などを元にファイル正当性を確認する必要がある。

何と言っても、オンラインバンキング専用セキュリティソフトだ。最大限の注意を払う必要がある。

問題がある場合は私の全財産がどこかに送られてしまう。

さて、困惑した私は会社サポートチャットに問い合わせをすることにした。

"https提供されていないソフトウェアをどうやって信頼すればいいのでしょうか?"というのが、はじめの質問である

以下がそのログ抜粋担当者フルネームが表示されていた箇所を「サポート」と伏せている)

サポート: https提供されていないソフトは、インストールの際にソフトウェアデジタル署名をご確認ください。

増田: 私はOSXを使っていますが、

増田: Trusteerエンドポイント保護アンインストール.appを実行する場合インターネットからダウンロードしたソフトですが信頼しますか?というようなことが表示されますよ。

サポート: はいアップルストアから提供品ではないためそのようなメッセージが表示されることもございます

増田: また、OS Xでは署名apple認証したデベロッパーが開発したソフトウェアであることをを証明してもデフォルトでは提供元を表示する機能は無かった様に記憶してます

増田: 実は提供元を保証する様に機能があるのでしょうか?

サポート: ルート証明が正しければ正しい提供元としてTrusteerが表示されますので、ご確認いただけますでしょうか。

増田: えーと、それはどのようにすればいいのでしょうか?

サポート: 申し訳ございませんが、この内容はRapportのサポート範囲外となりますので、お答えできかねますインターネット等でお調べいただけますでしょうか。

サポート: 正規のソフトウェアである事をご確認いただくための情報としては、組織に「Trusteer LTD」が表示されていることとなります

増田: ではもう一点

増田: https接続先が偽物というのはどのような場合でしょうか? 考えられるのは 1.接続先の秘密鍵漏れている場合 2.接続もと(ブラウザなど)が信頼できない認証局を信頼している 3.サイトがハックされている などのケースが考えられますがどのようなケースを想定していますか?

サポート: サイト自体ハッキングもしくは、ファーミングされたケースを想定しております

サポート: ファーミングされた場合偽者SSL証明書を利用することでhttps接続となりますが、接続先は偽者、となります

増田: 私がrapport.pkgをinstallしようとする際にはpasswordを求められるまでの間にアプリケーション提供元や署名の表示などは行われませんでしたが、これは問題ないとお考えですか?

増田: おそらくwindowsだと提供もと証明などがでてくるのでしょうけど。

サポート: 署名の表示は、お客様操作によって表示されるものですので、Mac仕様となります

増田: なるほど、比較的容易な攻撃方法であるDNSポイゾニングなどで間違った接続先に接続した場合OSXユーザー能動的に確認する以外に自衛手段はないということでよろしいでしょうか?

サポート: はい。Rapportを導入していない状況ですので、お客様ご自身の自衛手段となります

増田: 今後httpsでの提供する計画はありますか?

サポート: 予定につきましてはお応え出来かねますが、ご要望として担当部署に伝えることは可能でございます

増田: OSXユーザーがRapportインストーする際にそのような自衛手段を案内することはRapportのサポート範囲外ですか?

サポート: 申し訳ございませんが、そうなります。ただデジタル署名情報でしたら先ほどご案内した通りでございますので、デジタル署名をご確認ください。

サポート: また、デジタル署名をご確認いただくことで、ソフトウェア自体改竄が加えられていないこともご確認いただけますので、http/httpsに関わらず確かな方法となります

増田: その確認方法自分で調べないといけないということですか?

サポート: 申し訳ございませんが、ご自身でお調べしていただくようお願い申し上げます

増田: わかりました、ありがとうございます。 予算さえあれば私でも御社セキュリティソフトの偽物を容易に配布できることをよく理解しました。

サポート: こちらこそお問合せありがとうございました。

サポート: お客様への回答は以上となりますが、他に何かご不明な点などはございますでしょうか。

増田: いえ、ありがとうございます

サポート: Trusteer・カスタマーサポートチャットサポートをご利用いただきありがとうございます

ちなみに私は.pkgや.appの署名を確認する方法を見つけることは出来なかった。

2014-04-22

http://anond.hatelabo.jp/20140422184326

もともとはUNIXに使われていたCrypt,DESブロック長が8バイトだったのと

当時はそんなにディスク容量もなかったので便宜上バスワードは8バイトまで。(8バイトで切られる)

という歴史的仕様だった時の名残。今はSHA256かSHA512だから64文字ぐらいまでなら何の問題もない。

 

もっとも、当のUNIX世界ではとっくの昔に公開鍵暗号方式ワンタイムパスワードの組み合わせになってるので

直接パスワードを送信したりはしない。

 

30年か40年ぐらい昔の仕様が今でも残っているのが8文字なんじゃないかなぁ。いくらなんでも、時代に追いついてなさすぎだよね。

ちなみにDESなんてもう使わない。3DESですら脆弱MD5,SHA-1ですら脆弱と呼ばれる時代っすからね。

ただ銀行系の人は、そんな知識もないでしょ(技術屋じゃないからね)。下手すりゃ証明書ベリサインだよね。とかまだ言ってるとおもう。

彼らの知識を更新するのは、とんでもない重労働からSEは誰もやらないと思う。そんな事しなくても古い技術で金がもらえるのにわざわざ危険を犯してまで進言する奴はもう銀行業界にはいないだろ。

2013-07-21

password」のハッシュ値

MD5は「5f4dcc3b5aa765d61d8327deb882cf99」

SHA1は「5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8」

生年月日(数字8桁)も過去100年分(36500+閏年分)あればだいたい足りるよね

2012-05-05

http://anond.hatelabo.jp/20120505001212

なんか sha1md5 などによるハッシュ化に似たような話だね。

それらのハッシュ関数はその原理上、衝突することが避けられない。

その解釈と数値というものも、衝突という概念があり得るものなら別物の可能性があるし、無いなら両者は同じものでしょ。

2011-07-13

GPU

最近GPUを使ったクラッキングが増えているみたい。

無線LANのWPA2やMD5なんかのクラックがあちこちで。

http://gigazine.net/news/20110707_pyrit/

http://d.hatena.ne.jp/sen-u/20110629/p1

MD5レインボーテーブルなんかがあるから

わざわざ再計算しているわけだけども。

saltとか考えるとまぁアリかな。

WPA2も、PMKと呼ばれる512bitのマスターキーを秒間8万9000個

解析可能だそうな。

Zipもあった。

Zipは元ファイルによって暗号化の結果が変化するから

レインボーテーブル方式が使えないのでブルートフォース一択のはずだが、

この動画はすごい。。(珍しく日本語

http://www.youtube.com/watch?v=3dEN9JQ3R0U

秒間6億3千万

たぶん暗号化ヘッダの12バイトファイル数だけ、

ひたすらクラックしているんだろうけど、

動画でも複数ファイルで同一パスワードを使用している)

GPUってすごい。。

試しにPIKAZIPでやってみるとCorei7で秒間600万ちょいなので約100倍。

最新CPU一年かかる計算が3.6日ってことか。

うーん。

なんか他の使い方ねーのかな。。

2010-07-10

HT-03A froyo

dwang厨が無謀にもfroyoを入れてみる記録のページ。

名前リンクされると嫌なのでここに書いてみる。

結局CM6-RC1+yay-gapps で落着きそうな雰囲気。

まとめ (20100711 18:30 完了)

メモ
  • voldn + poweron → fastboot
  • home + poweron → recoverymode
初期状態

dwang-1.17.1

手順

eMonster用に使ってた sandisk 2GB (メモ)

確認されているROM

7/9 にリリースされているもの

  • defcon CM6 FroYo (Test9)
  • CM6-DS-Nightly (0709)
  • SPF Connection (2.7)

ext partition 要対応? とおもったら仏語じゃねーか

Wifi NG

  • Xtreme Froyo v1.9.5

@kenmood

Wifi OK

  • http://androidspin.com/2010/07/06/rom-kenmood-e-xtreme-froyo-v1-9-4-with-working-wifi-camera-bluetooth-3dgallery-for-t-mobile-g1mt3g/
1.5に戻す

どっかから落した20090801-docomo-ht-03a.rar のうち、boot, cache, data, system のみをnandroidで復旧してみる。nandroid.md5復元も忘れずに。

Xtreme Froyo v1.9.5 try
  • 日本語fontは後でupdate.zip で入れることとする (autosignとかしらないけど、あとで調べりゃなんとかなんだろ)
  • SPL 1.33.2005 ← 入ってた。
  • Latest Radio highly recommended (どうしたものか → だめなら後で考える)

手順

  1. done: ROM落せ http://tinyurl.com/extreme-froyo-1-9-5
  2. nope: (ステップ番号予約)
  3. done: black theme 落せ http://tinyurl.com/froyo-blacktheme-v2
  4. done: sdにコピれ
  5. done: full wipe
  6. done: flash rom → ついでに root.zip (以下参照) もここで焼いてしまう。suが入ってるだけだし。
  7. skip: flash a2sd + cc patch → 2ch "root13":770 によると既に適用済みらしい
  8. skip: flash froyo blacktheme → blackは面倒そうなのでやめる
  9. reboot → すげー時間かかるんですけど、ダメか。
以後実行せず
  1. ADWの設定をこうしろ → どうでもいいがな
  2. sparepartsの設定をこうしろ (launcher in memory)
  3. show clockとかいろいろ (blacktheme場合は時刻の色)
  4. notification colorの設定 (black theme場合)
  5. google mapをmarketからdownload
  6. reboot
  7. 警告: 他のkernelとかgappsをinstallすることのないように → kernelはまだしも、gappsはなんでだろ
  8. and ENJOY!

追加手順:

  1. root permissionの修正はこれを焼く: http://www.mrcellphoneunlocker.com/android/root.zip
メモ
  • rebootに必要なのは「信じる心」?
  • boot animation が重くなったり止まったりするのは何故なんだぜ
  • 最終的に、boot できずあきらめてみる。
他のromを試す
  • CM5.0.8 (Eclair) → ok (ちゃんと焼けるか念のためテストした)
  • SPF Connection 2.8 → bootはするけどfontが豆腐、あと突然死

http://www.androidinforum.fr/htc-dream-android/froyo-french-connection-100-t1742.html#p6156

partition: swap 160M, ext 500M, 残り vfat がおすすめとな。

何度か丹念に「目標をwipeしてreboot」を繰り返してたら安定した気がする。

豆腐をfont入れ、localeをlibicudata.so の入れ替えで対処 (できるかなreboot中)

→ libicudata.so は入れかえちゃダメ。起動しなくなる。recoveryで起動して/systemをマウントしてことなきを得る。

SPF Connection 2.8

2010-07-11 追記

2chでも報告されているとおり、wlanが使えない。あと細かい話だけど、live wallpaperが使えない気がする。メモリが足りないだけかもしれないけど。

marketが死にまくる (acoreが死ぬ)。ほかにも死にまくるけど、何故かはよくわからない。とりあえず体験はできるけど、まだ常用には至らないかも。

(安定している、と言っている人もいる)

SPF Connection 2.8.1

2010-07-11 追記

zip落してきて上書きinstallしてみた。なんか日本語fontが消されたんだけど(ぶー!)

ちなみに日本語fontはM+を利用してます。

時間つかった限りでは、他人にお勧めできるほどじゃないけど何とか使いものになるかも。dwang環境はnandroidでしかバックアップしていないので、手作業でアプリなどは手作業で復帰する予定。

CM6-RC1

(2010-07-11 午後5時追記)

どうもSPF Connectionが安定しないのと、ベースがCM6ということで、まずはベースに近いほうが良いだろうと

CM6-RC1を焼いてみる(この項続く)

http://www.cyanogenmod.com/home/cyanogenmod-6-0-0-rc1

Marketが極めて不安定な模様。エラー

E/AndroidRuntime( 2000): FATAL EXCEPTION: UpdateCheckinDatabaseService

E/AndroidRuntime( 2000): java.lang.SecurityException: Permission Denial: writing com.google.android.gsf.settings.GoogleSettingsProvider uri content://com.google.settings/partner from pid=2000, uid=10036 requires com.google.android.providers.settings.permission.WRITE_GSETTINGS

すぐ直りそうではあるけど。

Market落ち対策:
  • yay-gapps を普通のgappsの上から焼いた時はMarket落ち頻発

(エラー内容から察するに、installされたapkの記録をgoogle accountに書き込めない)

  • まっさらの1.5からCM6-RC1, yay-gapps を焼いた状態ではMarket落ち発生せず

c.f. http://forum.xda-developers.com/showpost.php?p=7139560&postcount=109

2010-01-03

http://anond.hatelabo.jp/20100103031352

ハッシュといえば昔から

cryptと決まっているし

新しくてもMD5SHA-1か512だろ?それ以外は互換性の理由からそれこそ使わない。

問題はハッシュアルゴリズムじゃなくて、ソルトの生成アルゴリズムだけど、普通ソルトシステム一律な事が多い。

もし、巻き取りがうまくできないとしたら、そりゃ、ハッシュ化されていればなんでもいいと思っている、そのシステム設計者が平文設計と同じぐらい知識が無いんだろ。

ユーザーデーターベスの以降なんて、ハッシュアルゴリズムの欄を1つ作っておくだけで十分終わる。

聞き方を変えれば、cryptかMD5かSHA以外のハッシュアルゴリズムなんて使うのか?せいぜい、ソルトぐらいだろ?差分なんて

もっと言えば、数年に1回のシステム換装のために24時間365日のセキュリティ犠牲にするなんて異常。

2009-03-27

ハッシュ関数を調べた

http://anond.hatelabo.jp/20090326142330 の続き

pythonでベンチとった。試した方法は以下

  1. md5hex: md5を使う
  2. crc32x4: 4分割してそれぞれcrc32にかけてつなぐ
  3. headtail: 初めの16文字と終りの16文字をつなぐ
  4. skipover: 等間隔に32文字とる

長くなるので、使用したスクリプトと生の結果は http://anond.hatelabo.jp/20090326123924 に貼った。

結果としては、早さは3, 4, 1, 2の順で、3を基準にとると、

文字列md5hexcrc32x4headtailskipoverループ回数
2566.6361.01.465536
10248.3361.02.016384
409626851.02.54096

という比率になった。

文字列長が長くなるとやはり後2つが有利だ。また、今回は32文字に切り詰めたがそれでもコリジョンは発生しなかった。アルゴリズム上、数文字だけの変化には対応出来ない可能性があるが、切り詰める量が少なく入力にいくらかのランダム性があれば実用になると思う。

(追記:URLで使ったら、ランダム性が悪くてコリジョン出た。素直にmd5ベターかもしれない)

しかし、この程度の速度差であれば、コリジョン耐性を重視して素直にmd5を使用するのも良いかもしれない。特に、今時はネイティブコードライブラリをほぼ標準で持つ処理系が多いため、まずはmd5で、としても間違いはなさそう。

2009-03-26

http://anond.hatelabo.jp/20090326141353

それいいね。

後は、間を抜かすアルゴリズムだね。

250超えたら一つおき、でもよいかも。

int(文字列長/250)文字おきで圧縮する。

とか書きつつ。

http://search.cpan.org/~gaas/Digest-1.15/Digest.pm#Digest_speed

数字が小さいほうが高速、ではなく大きいほうが高速。

これはperlなんだけど、LLで下手に演算するより、バイナリライブラリを使ったほうが高速らしい。

ちなみに使う言語python

幾つか実装してベンチとってみよ。案外md5が一番早かったりしてw

http://anond.hatelabo.jp/20090326124554

連番ってどういうこと?

順方向に探査すれば?ってこと?

何に使いたいか具体的に書くと、とある処理でwebページを取得するのだけど、その時、urlをキーにmemcachedキャッシュしようとしている。

しかし、urlが長大で250バイトを越えるとmemcachedが受け付けないので、適当な長さの文字列に変換したい。

250バイト未満のキーなら受け付けるmemcachedを使ってキャッシュすることが確定事項。

今は250バイト以上ならmd5値の16進表記を使うようにしている。

しかし、こんなところでmd5ってのも重いだけだなと。

crc32も使えるので、urlを4分割して16バイト長にするのはどうか。

実際どのくらい差があるのか。

と、思ったところでsquidとかその他実用しているキャッシュだったりハッシュテーブルだったりはどんな関数アルゴリズム使ってるのかなと思ったわけ。

今後のためにも調べておきたいと思った。

ハッシュ関数を調べる

セキュリティ目的ではない。ハッシュテーブルで使うような奴でキャッシュで使いたい。

手軽なほうが良い。軽いほうが良い。推測可能でよい。数十バイトくらいの文字列にしたい。

md5が一番汎用っぽいけど、無駄に重い気がする。crc32は軽そうだしそれなりに汎用っぽいけど、ハッシュ長が短いのがめんどい

ベターはなんだろう。セオリーはなんだろう。

調べた→ http://anond.hatelabo.jp/20090327015620

ベンチ用スクリプト

#!/usr/local/bin/python
from sys import argv, stderr
from time import time
from string import ascii_letters, join
from random import choice
from hashlib import md5
from binascii import crc32
from itertools import izip

time_fmt = '%10s: %5d ms'
shift = int(argv[1]) if len(argv)>1 and argv[1].isdigit() else 2
length = 0x100 << shift
cycle = 0x10000 &gt;&gt; shift
print &gt;&gt; stderr, 'string length: 0x%x, cycle: 0x%x' % (length, cycle)
data = tuple(''.join(choice(ascii_letters) for i in xrange(length)) for j in xrange(cycle))

start = time()
md5hex = tuple(md5(s).hexdigest() for s in data)
print &gt;&gt; stderr, time_fmt % ('md5hex', (time() - start) * 1000)

start = time()
crc32x4 = tuple(''.join('%08x' % abs(crc32(s[i::4])) for i in (0, 1, 2, 3)) for s in data)
print &gt;&gt; stderr, time_fmt % ('crc32x4', (time() - start) * 1000)

start = time()
startend = tuple(s[:16]+s[-16:] for s in data)
print &gt;&gt; stderr, time_fmt % ('headtail', (time() - start) * 1000)

start = time()
skip = tuple(s[::(len(s)/32+1)] for s in data)
print &gt;&gt; stderr, time_fmt % ('skipover', (time() - start) * 1000)

for s in izip(data, md5hex, crc32x4, startend, skip):
    print join(s)

実行結果

% python hashbench.py 0 &gt; hash0.txt
string length: 0x100, cycle: 0x10000
    md5hex:   199 ms
   crc32x4:  1081 ms
  headtail:    30 ms
  skipover:    41 ms
% python hashbench.py 2 &gt; hash1.txt
string length: 0x400, cycle: 0x4000
    md5hex:    83 ms
   crc32x4:   363 ms
  headtail:    10 ms
  skipover:    20 ms
% python hashbench.py 4 &gt; hash2.txt
string length: 0x1000, cycle: 0x1000
    md5hex:    52 ms
   crc32x4:   170 ms
  headtail:     2 ms
  skipover:     5 ms

2008-08-10

はてブコメントに使われて delicious がコメントに使われない理由

はてなブックマークコメントが表示されるアドレスは、

http://b.hatena.ne.jp/entry/<URL>

となるので、ブックマークレットなどで簡単にはてブコメントを参照できる。

delicious の場合は

http://delicious.com/url/<md5ハッシュ的ななにか>

のようにブックマークレットなどで簡単に生成できないようになっており、

あるURLに対するコメント閲覧用ブックマークレットも何も用意されていない。

このため、コメント欄は、ただの概要を書くための欄として使用されるのが常である。

これは意図したわけではなく、特定URLブックマークコメント一覧を見る、という使い方を想定していなかったためだろう。

(単純な md5('URL') なのかもしれないが、ブックマークレットなどが用意されていないというのが大きい)

2007-06-04

[]??Delphihacks??Delphi??Win32API??

Delphi - Wikipedia??Windows開発の決定版 - Delphi(Skype??なでしこ)

タグ「delphi」を含む注目エントリー - はてなブックマーク

Delphiアプリケーションのメモリリーク検出法

Delphiアプリケーションのメモリリーク検出法 (山本隆の開発日誌)

作ろう!コンポーネント Delphi C++Builder

http://www.componentsource.co.jp/features/delphi/

TMS Software | Productivity software building blocks

Components > Effects and Multimedia > Video. Torry's Delphi Pages

Components > Effects and Multimedia > Audio. Torry's Delphi Pages

Components > Effects and Multimedia > Voice. Torry's Delphi Pages

Components > Effects and Multimedia > Direct X. Torry's Delphi Pages

try finally end

CとDelphiの対比表

eXeScope(Windows95/98/Me / ユーティリティ)

Delphi - テクノラティブログ検索

2ch検索: [Delphi]

Delphi-ML〓〓〓〓〓〓〓〓〓〓〓??About Delphi

Delphi Q & A掲示板

Delphi Q & A 〓f〓〓〓〓 〓〓〓〓〓〓O〓〓(HTML〓o〓[〓W〓〓〓〓)

fdelphi.com

Delphi入門

旧 Delphi 入門??Seventh Delphi

Delphiメモ

超ローテクDelphi講座

俺のためのDelphi学習

Delphi はじめの一歩

VB〓〓VC〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓H

Delphi の格言

キーボードからの入力取得

マウスボタンのクリック、マウスの位置情報の取得

ジョイスティックからの入力取得

バッカーへの階段: 入門:キーロガー

テキストファイルを読み書きする

テキストファイルのロードとセーブ

DelphiによるWin32API

Delphi WAVEサウンド音を鳴らす/Tips & Tricks

MIDI、WAVEファイルを再生する

サウンドを読み込んで鳴らす

MIDIを演奏する MCI/midiStream

5分ではじめるDelphi - 第1回 簡単なメディアプレーヤの作成(前編)

MP3プレイヤーを作る>dllによる再生

Controling sound volume from code

Torry's Delphi Pages

lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT

SwissDelphiCenter.ch : ...set the volume for the microphone/ mute it (enhanced)?

Components > Sound Effects > Mixer. Torry's Delphi Pages

uses MMSystems;

//

PlaySound('C:\WINNT\Media\start.wav', 0, SND_FILENAME or SND_ASYNC);


ビットマップを表示しよう

画像ファイルを指定した位置へ表示

俺Delゲーム応用

画面をキャプチャして表示する

めもニャンだむ

Delphi6でプログラミング ビットマップの半透明コピー AlphaDraw

画像処理プログラミング講座

Graphic Effect

カラー画像をモノクロ画像に変換

procedure TForm1.Button1Click(Sender: TObject);

var

bmp1,bmp2 :TBitmap;

begin

bmp1 :=Tbitmap.Create;

bmp2 :=Tbitmap.Create;

try

bmp1.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FINANCE.BMP');

bmp2.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FACTORY.BMP');

Form1.Canvas.Draw(10,10,bmp1);

Form1.Image1.Canvas.Draw(10,10,bmp2);

finally

bmp1.Free;

bmp2.Free;

end;

end;


無料版Delphi6でSTGをつくるためのプログラミング講座 Ver.2005 Jan.

Delphiでわずか59KBのオセロを作る方法

めもニャンだむ:BIOS 情報

コンストラクタとデストラクタ

SwissDelphiCenter.ch : ...get the MAC Address?

乱数

DelphiでMD5

もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん

Delphi WindowsのOSのバージョンを取得する/Tips & Tricks

SourceForge.net: Gecko SDK for Delphi

DelphiでWinSock

SQLite-もげもげ〜

BDS(Delphi/BCB)用SQLiteライブラリ (山本隆の開発日誌)

Application.ProcessMessages

FrontPage - DelphiVIP

SwissDelphiCenter.ch : programming tips

Torry's Delphi Pages

Delphi Tips

Delphi Code Tips

Magic of Delphi4〓z〓[〓〓 〓y〓[〓W

Delphi Win32API/API関数一覧

Delphi〓〓〓Z

クジラ式 Delphi 資料

Delphi〓〓y〓[〓W

サイト移転のお知らせ(Mr.XRAY)

openDelphi.org

KOL and MCKPage

Gen's Delphi Labo.

サイト移転のお知らせ(Mr.XRAY)

ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール

フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro

フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro

http://torrent.borland.com/turbo_hotfix_rollup.zip

http://torrent.borland.com/prereqs_jp.zip

http://torrent.borland.com/turbodelphi_jp.exe

(1) \dotNETRedist\dotnetfx.exe

(2) \dotNETRedist\langpack.exe

(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe

\dotNETSDK\setup.exe

\IE60SP1\ie6setup.exe

\dotNETJSharp\vjredist.exe

\dotNETJSharp\vjredist-このエントリーをはてなブックマークに追加ツイートシェア

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん