Module: Blowfish::Padding
- Defined in:
- lib/blowfish/padding.rb
Constant Summary collapse
- MODES =
[:none, :spaces, :ansi_x923]
Class Method Summary collapse
Class Method Details
.pad(s, mode = nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/blowfish/padding.rb', line 7 def self.pad(s, mode = nil) mode ||= :ansi_x923 unless MODES.include?(mode) fail UnknownPaddingModeError, 'Invalid padding mode' end l = 8 - (s.bytes.count % 8) case mode when :none if s.bytes.count % 8 != 0 fail InvalidDataSizeError, 'Data size should be divisible by 8' end when :ansi_x923 s += 0.chr * (l - 1) + l.chr when :spaces s += ' ' * l end s end |
.unpad(s, mode = nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/blowfish/padding.rb', line 27 def self.unpad(s, mode = nil) mode ||= :ansi_x923 sz = s.bytes.count unless MODES.include?(mode) fail UnknownPaddingModeError, 'Invalid padding mode' end fail InvalidDataSizeError, 'Invalid cipher text size' if sz % 8 != 0 case mode when :ansi_x923 last = s[-1].bytes.to_a[-1] s = s.byteslice(0, sz - last) when :spaces s = s.byteslice(0, sz - 8) + s.byteslice(sz - 8, 8).rstrip end s end |