A method of constructing (n, n(n−1),n−1) permutation group codes based on coset partition using a generator including an orbit leader array generator, a flash memory, and a cyclic-bidirectional-shift register group, wherein the orbit leader array generator is operable for performing an operation to generate orbit leader permutations, wherein the flash memory is operable for storing output results of the orbit leader array generator and the cyclic-bidirectional-shift register group, and wherein the cyclic-bidirectional-shift register group is operable for performing an operation acting on a permutation, the method comprising:
- receiving a set of data via a wireless communication or a power line carrier communication;
- constructing a permutation code based on the set of data received with a code length of n, a minimum distance of n−1, and a code size of n(n−1), using
- Pn={{pβα}β=1n}α=1n-1=CnOn={{Cno1CnO2, . . . , Cnon-1}, . . . , {{cβ0oα}β=1n}α=1n-1,
- wherein Pn=CnOn represents that Cn is a coset of a subgroup On, and On is also a coset of a subgroup Cn,
- wherein Pn={{Cno1}, {Cno2}, . . . , {Cnon-1}} represents dividing Pn into n−1 cosets by the subgroup Cn, and each coset {Cnoa} forms an orbit or a cyclic Latin square (C-LS) of a permutation oα, and
- wherein Pn={{pβα}β=1n}α=1n-1={{cβ∘oα}β=1n}α=1n-1 represents the permutation code, each codeword pβα is generated by composition operation of a permutation cβ of the subgroup Cn and a permutation oα of the subgroup On, α=1, 2, . . . n−1, and β=1, 2, . . . n;
- generating the permutation code for the set of data based on the constructing step;
- and
- transmitting and protecting the set of data by transmitting the permutation code to a receiver terminal via the wireless communication or the power line carrier communication.