2012-07-02 3 views
1

PHP에서는 복어 해시를 생성하기 위해 내장 된 crypt() 함수를 사용하여 일부 비밀번호 해시를 생성합니다.크로스 플랫폼 호환 Blowfish 해시 생성 (PHP/Ruby)

<?php $hash = crypt("secure password", '$2a$10$ ... salt here ... $'); 

나는 루비 String#crypt을 가지고 볼 수 있지만, 우리가 얻을 출력 (훨씬 짧은 해시) 완전히 다르다. crypt (3)에 대한 man 페이지를 보면 일부 Linux 배포판에서만 복어를 glibc에 추가하므로 루비가 지원하지 않는다고 가정합니다.

이제 Google 검색을 시도하고 crypt 보석을 찾았지만 2^10 대신 2^16 사이클을 사용하도록 하드 코딩 된 것으로 보입니다.

Crypt::Blowfish.new("abc").encrypt_block("foo") 
TypeError: can't convert String into Integer 
from /Users/chris/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/crypt-1.1.4/crypt/blowfish.rb:47:in `|' 

아무도 우리가 PHP에서 생성 한 루비에서 같은 복어 해시를 생성 할 수있는 방법을 알고 있나요 : 그것은 또한 나에게 루비 1.9.3에서 예외를 제공?

답변

1

BCrypt 보석은 우리가 필요로하는 무엇을 수행합니다

BCrypt::Engine.hash_secret("bob", "$2a$10$ ... salt here ...")