「Md5」を含む日記 RSS

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

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-Permalink | 記事への反応(1) | 15:15

ログイン ユーザー登録
ようこそ ゲスト さん