*simpletext: For handling text typed into Maple: has ordered_alphabet[], Translate_to_numbers(), Translate_to_letters() *textproc: For handling files in ASCII text: has badlist[], spacelist[], punctlist[], otherlist[], majletters[], minletters[], trim1(), ascii() *ngraphs has Parse_ngraphs(), Decompose_ngraphs() *mat has Parse_mat(), Decompose_mat() *textfile is text to be encrypted *outp is the output. *fin_fld.mws shows you how to create a finite field F_(p^d) using the Maple function GF. NOTES: For enciphering matrices I suggest: Use LinearAlgebra not linalg Start with >with(LinearAlgebra); which will include the whole LinearAlgebra library or just call a function with its long name, e.g. >LinearAlgebra[Determinant](A); will compute the determinant. Note that for two Matrices, A,B, >Multiply(A,B) computes the product by checking the type of each (Matrices) and then calling the function MatrixMatrixMultiply(A,B) If B were a vector it would call MatrixVectorMultiply(A,B); It seems that you can even do >A.B; to compute the product. OR >A+B; for the sum >A^(800) for exponentiation of a square matrix. For the inverse use >MatrixInverse(A); or >A^(-1); For working mod m you need to be a bit careful, For computation with scalars use & to indicate to Maple to think before it computes: > 5 &^(500023034) mod 71; is computed it no time, but without the & it will first compute 5^(500023034) and then reduce. With matrices I'm not sure how to make Maple think mod m for some operations. For determinants use >Determinant(A, method=modular[m]); where m is the integer that you want ot use as modulus. Unfortunately the same trick doesnt seem to work for the functions Multiply, MatrixInverse or for exponentiating. Even though we can't seem to tell Maple to compute mod m we can get it to give the result mod m. >map(modp, A.B, m); >map(modp, A^(-1), m); >map(modp, A^(500320), m); etc. You can also define a new procedure, >Mul_mod := (M, N, m )-> map(modp, M.N, m); Then use >Mul_mod(A,B,m) to compute AB mod m. You can use >showtime() to keep track of how long computations take. See also time().