class Utils::HammingDistanceFilter
Public Instance Methods
shortest_distance_entries(buffer,result_entries: 4,samples: 4)
click to toggle source
# File lib/crypto-toolbox/utils/hamming_distance_filter.rb, line 3 def shortest_distance_entries(buffer,result_entries: 4,samples: 4) offset = 2 distances = ((0+offset)..64).map do |keysize| # take the first 4 blocks of keysize length, generate all combinations (6), # map than to normalized hamming distance and take mean buffer.chunks_of(keysize)[0,samples].combination(2).map{|a,b| a.hdist(b,normalize: true)}.reduce(&:+) / 6.0 end # get the min distance, find its index, convert the keylen distances.min(result_entries).map{|m| distances.index(m)}.map{|i| i + offset }.uniq end