Method: Crypt::Noise#remove_noise

Defined in:
lib/crypt/noise.rb

#remove_noiseObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/crypt/noise.rb', line 63

def remove_noise
  noisyMessage = self
  bitmapSize = noisyMessage.length / 9
  actualMessageLength =  bitmapSize * 8

  actualMessageStart = bitmapSize
  actualMessageFinish = bitmapSize + actualMessageLength - 1
  actualMessage = noisyMessage[actualMessageStart..actualMessageFinish]

  bitmap = []
  0.upto(bitmapSize - 1) { |byte|
    c = noisyMessage[byte]
    0.upto(7) { |bit|
      bitmap[byte * 8 + bit] = (c[bit] == 1)
    }
  }
  clearMessage = "".force_encoding("ASCII-8BIT")  # stop ruby 2 using Unicode
  0.upto(actualMessageLength) { |pos|
    meaningful = bitmap[pos]
    if meaningful
      clearMessage << actualMessage[pos]
    end
  }
  return(clearMessage)
end