2

これはどのように可能ですか?RubyにPHPと同じMD5を提供させることができず、これを理解できません...エンコードを考えましたが、すべてのファイルを同じ形式に保つことができたようです。

PHPコード:(結果:bfa7df865d9f4aff62c4643d0e1cb33b)

echo md5("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9");

ダイジェストを使用したRubyコード-MD5:(結果:bd53907a1b47e9a381ee663ec75b59f4)

require 'digest/md5'
puts Digest::MD5.hexdigest("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9")

HMAC-MD5を使用したRubyコード:(結果:d41d8cd98f00b204e9800998ecf8427e)

require 'hmac-md5'
puts HMAC::MD5.new("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9").hexdigest
4

2 に答える 2

7

二重引用符の代わりに一重引用符を使用する

Digest::MD5.hexdigest('9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9')
于 2013-02-15T17:55:03.503 に答える
2

文字列末尾の「@akskd9」を変数として扱いたくなるのが「#@」の組み合わせです。

例えば:

@akskd9 = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@foobar

..そこに # がない場合、@ 記号は無視されます。

@akskd9 = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@@akskd9

...興味深いことに、# の後に {...} がなければ、残りの文字列を変数として扱います。

@ak = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@
于 2013-02-15T18:25:13.323 に答える