2010-10-04 2 views
0

В PHP существует функция hash(), которая может возвращать необработанные двоичные данные.Строка Ruby для исходного двоичного кода

http://de2.php.net/manual/en/function.hash.php

Я хочу сделать то же самое в Ruby. Как мне это сделать?

сгенерировать хэш с:

h = Digest::SHA2.new(512) << "hashme" 

РНР генерирует 32 байт "сырой двоичный выход".

ответ

2

Если вам нужен выход, чтобы быть длиной 32, вам просто нужно позвонить Digest :: SHA2.new с битовой длиной 256 (который по умолчанию):

irb> require 'digest/sha2' 
=> true 
irb> h = Digest::SHA2.new(256) << "hashme" 
=> #<Digest::SHA2:256 02208b9403a87df9f4ed6b2ee2657efaa589026b4cce9accc8e8a5bf3d693c86> 
irb> puts h.length 
32 
=> nil 
irb> puts h 
02208b9403a87df9f4ed6b2ee2657efaa589026b4cce9accc8e8a5bf3d693c86 
=> nil 

Или просто:

irb> h = Digest::SHA2.new << "hashme" 
=> #<Digest::SHA2:256 02208b9403a87df9f4ed6b2ee2657efaa589026b4cce9accc8e8a5bf3d693c86> 
irb> puts h.length 
32 
=> nil 
irb> puts h 
02208b9403a87df9f4ed6b2ee2657efaa589026b4cce9accc8e8a5bf3d693c86 
=> nil 

Надеюсь, что это поможет!

+0

большое спасибо, но это не решает мою проблему. PHP имеет третий параметр в hash(), который запускает вывод «raw binary». Я хочу, чтобы преобразовать h в то же самое «raw двоичный» вывод. см. http://de2.php.net/manual/en/function.hash.php –

+0

ОК, я решил это, просто позвонив h.digest :) Большое вам спасибо! –