# File lib/active_record/vendor/mysql411.rb, line 141 def scramble411( password, seed, old_ver ) return "" if password == nil or password == "" raise "old version password is not implemented" if old_ver # print "Seed Bytes = " # seed.each_byte { |b| print "0x#{b.to_s( 16 )}, " } # puts stage1 = Digest::SHA1.digest( password ) stage2 = Digest::SHA1.digest( stage1 ) dgst = Digest::SHA1.new dgst << seed dgst << stage2 stage3 = dgst.digest # stage1.zip( stage3 ).map { |a, b| (a ^ b).chr }.join scrambled = ( 0 ... stage3.size ).map { |i| stage3[i] ^ stage1[i] } scrambled = scrambled.map { |x| x.chr } scrambled.join end