// 乱数を発生する public static uint random(uint n) { return (n * 5041 + 13); } |
// 30(48)~ FF(255)の変換テーブルを作成 public static void shuffle(uint val) { uint i, j; for (i=0; i<208; i++) m_et[i] = 0; for (i=0, j=val; i<208; i++) { for(j=random(j)%208; m_et[j]!=0; j=(j+1)%208) ; m_et[j] = (byte)(i+48); } } |
// Encode public static void encode(char[] msg) { char chr; byte* byt; byt = (byte*)&chr; for(int i=0; i<msg.GetLength(0); i++) { chr = msg[i]; e_cvt(byt); msg[i] = chr; } } // byte 変換 public static void e_cvt(byte* pt) { for (int i=0; i<sizeof(char); i++) { if (*(pt+i)>=48) *(pt+i) = m_et[*(pt+i)-48]; } } |
using System; using System.IO; // for File, StreamReader using System.Text; // for Encoding unsafe class console { static string m_str= "0189abcxyzABCXYZ!#$%&'()=~|`{+*}<>?_\n01abABあいアイ\n日月火水木金土小吉女房沢口康子声捜査官智代美"; static byte[] m_et = new byte[208]; public static void Main() { StreamWriter writer; uint val = 123; shuffle(val); char[] msg = m_str.ToCharArray(); Console.WriteLine(msg); encode(msg); Console.WriteLine(msg); string str = new string(msg); writer = new StreamWriter("C:\\TMP\\encode.txt", false, Encoding.UTF8); writer.Write(str); writer.Close(); Console.ReadLine(); } |
[Next Chapter ↓] TEXT の複合化
※・