// 乱数を発生する
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);
}
}
|
// Decode
public static void decode(char[] msg)
{
char chr;
byte* byt;
byt = (byte*)&chr;
for(int i=0; i<msg.GetLength(0); i++)
{ chr = msg[i];
d_cvt(byt);
msg[i] = chr;
}
}
// decode byte 変換
public static void d_cvt(byte* pt)
{
for (int i=0; i<sizeof(char); i++)
{
if (*(pt+i)>=48) *(pt+i) = m_dt[*(pt+i)-48];
}
}
|
using System;
using System.IO; // for File, StreamReader
using System.Text; // for Encoding
unsafe class console
{
static byte[] m_et = new byte[208];
static byte[] m_dt = new byte[208];
public static void Main()
{
StreamReader reader;
uint val = 123;
shuffle(val);
for(int i=0; i<208; i++) m_dt[m_et[i]-48] = (byte)(i+48);
string str;
reader = new StreamReader("C:\\TMP\\encode.txt", Encoding.UTF8);
str = reader.ReadToEnd();
reader.Close();
char[] msg = str.ToCharArray();
decode(msg);
Console.WriteLine(msg);
Console.ReadLine();
}
|
[Previous Chapter ↑] TEXT の暗号化
※・