Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > fff2921ff40d1f832561027dc17323f5 > files > 35

epic5-1.1.9-3.mga5.i586.rpm

This version of epic includes FiSH support.

FiSH is is vaguely like base64-encoded blowfish encryption.  The following
behaviors were observed:

Issue 1: RADIX64 conversion
---------------------------
FiSH uses a RADIX64 conversion, which converts 6 bits of binary data into
1 printable byte.  Since 6 bits contains 64 possible values, you can select
any 64 printable ascii code points you want, and do the conversion that way.

FiSH uses different code points than base64 does.

Whereas Base64 converts every 3 input bytes (24 bits) into 4 output bytes, 
	(meaning the output is 133% the size of the original)
  FiSH converts every 4 input bytes (32 bits) into 6 output bytes.
	(meaning the output is 150% the size of the original)
  The high 4 bits of the final RADIX64 byte are zero.

Whereas Base64 processes the input in 4 byte chunks,
  FiSH processes the input in 8 byte chunks

Whereas Base64 processes the input left to right,
  FiSH processes the input right to left

Whereas Base64 accounts for "missing" bytes in a final packet when encoding
  FiSH pads out the final packet with nul bytes.

Whereas Base64 accounts for "missing" bytes in a final packet when decoding
  FiSH ignores a final packet that is too short.

Base64:   Byte 0, Byte 1, Byte 2 ->  Output 0, Output 1, Output 2, Output 3
FiSH:     Byte 7, Byte 6, Byte 5, Byte 4 -> Output 0, Output 1, Output 2,
					    Output 3, Output 4, Output 5,
	  Byte 3, Byte 2, Byte 1, Byte 0 -> Output 6, Output 7, Output 8,
					    Output 9, Output 10, Output 11