A system comprising: associations between a plurality of first bit strings and phase invariant codewords, the associations such that: the phase invariant codewords are divided into a plurality of groups based on a number of '1' bits in each respective phase invariant codeword, each first bit string is represented by a respective phase invariant codeword in each group, wherein a phase invariant codeword is a set of symbols in which every circularly shifted version of the set represents a same first bit string, the first bit strings having a first length, and an encoder which upon execution instructs at least one processor to: read a message comprising a second bit string of a second length longer than the first length; divide the message into a plurality of substrings such that each substring is of the first length, such that each substring corresponds with a respective first bit string; select, based on the associations, for each substring of the message, a phase invariant codeword representing the first bit string corresponding with the substring; and encode, on a data bearing medium, a composite codeword comprising each determined phase invariant codeword. associations between a plurality of first bit strings and phase invariant codewords, the associations such that: the phase invariant codewords are divided into a plurality of groups based on a number of '1' bits in each respective phase invariant codeword, each first bit string is represented by a respective phase invariant codeword in each group, wherein a phase invariant codeword is a set of symbols in which every circularly shifted version of the set represents a same first bit string, the first bit strings having a first length, and the phase invariant codewords are divided into a plurality of groups based on a number of '1' bits in each respective phase invariant codeword, each first bit string is represented by a respective phase invariant codeword in each group, wherein a phase invariant codeword is a set of symbols in which every circularly shifted version of the set represents a same first bit string, the first bit strings having a first length, and an encoder which upon execution instructs at least one processor to: read a message comprising a second bit string of a second length longer than the first length; divide the message into a plurality of substrings such that each substring is of the first length, such that each substring corresponds with a respective first bit string; select, based on the associations, for each substring of the message, a phase invariant codeword representing the first bit string corresponding with the substring; and encode, on a data bearing medium, a composite codeword comprising each determined phase invariant codeword. read a message comprising a second bit string of a second length longer than the first length; divide the message into a plurality of substrings such that each substring is of the first length, such that each substring corresponds with a respective first bit string; select, based on the associations, for each substring of the message, a phase invariant codeword representing the first bit string corresponding with the substring; and encode, on a data bearing medium, a composite codeword comprising each determined phase invariant codeword.