Jul 23, 2007

JAVA code with Monoalphabetic algorithm


private String Monoalphabetic(String text,int key,boolean encry) {
String spText="";
int index = 0;

//กำหนดค่าให้กับตัวแปรเพื่อเป็น plaintext ทั้งหมดที่อนุญาติให้เข้ารหัสและถอดรหัส
char[] pText = new char[180] ;
try{
//A=>z 94
for (int i=32; i<=126; i++) {
pText[i-32] = (char)i;
}
//ก=>ฮ 58
for (int i=160; i<=218; i++) {
pText[i-160+94] = (char)i;
}
//0=>9 28
for (int i=223; i<=251; i++) {
pText[i-223+94+58] = (char)i;
}
}catch(Exception e){System.out.println(e);}

//กำหนดค่าสูงสุดของจำนวน plaintext ที่มีทั้งหมด
int maxChar = pText.length-1 ;

//รับตัวเลขลำดับอ้างถึง plaintext ทั้งหมด เก็บไว้ในตัวแปร
int[] xText = new int [pText.length];
for(int i=0; i<(maxChar+1); i++) {
xText[i] = i;
}

//กำหนดค่า
int[] cText = new int [xText.length]; //algorithm have value key
int[] ixText = new int [text.length()]; //number code text of iText
char[] iText = new char[text.length()]; //char of text

//เก็บข้อความ plaintext ที่ได้จากผู้ใช้ ไว้ยังตัวแปร
try{
text = new String(text.getBytes("TIS-620"),"ISO8859_1");
} catch(java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
iText = text.toCharArray();

//ทำการเข้ารหัสแบบ Monoalphabetic ร่วมกับ key ที่ป้อน
//และเก็บไว้เป็นชุดของ plaintext ทั้งหมดที่ผ่านการเข้ารหัสแล้ว
//ซึ่งเป็นการนำตัวเลขลำดับ ที่ผ่านการบวกกับคีย์ นำมาหารตัดเศษ

for(int i=0; i<=maxChar; i++) {
              cText[i] = (xText[i]+key)%(maxChar+1);
}

//ถ้าเข้ารหัส จะเข้าเงื่อนไขนี้
if(encry == true) {

spText += "Plaintext = "+text+"\n";
spText += "key = "+key+"\n\n";

//เรียงอักษรที่เป็น plaintext ทั้งหมดแสดงบนหน้าจอ
for(int i=0; i<=maxChar; i++) {
spText += pText[i]+" ";
}
spText += "\n";

//เรียงตัวเลขชี้ลำดับของ plaintext ทั้งหมดแสดงบนหน้าจอ
for(int i=0; i<=maxChar; i++) {
spText += xText[i]+" ";
}
//แสดงตัวเลขประจำของอักษรที่ป้อนเข้ามา
spText += "\n\nPlaintext code = ";
for(int j=0; jfor(int i=0; i<=maxChar; i++) {
//ถ้าตัวอักษร plaintext ที่มีตรงกับอักษรที่ป้อนเข้ามา
//จะเก็บลำดับของตัวชี้ แสดงบนหน้าจอ

if(pText[i] == iText[j]) {
spText += xText[i]+" ";
}
}

spText += "\nEncryption Algorithm :: e_k(x) = x + K mod "+(maxChar+1)+"\n\n";

//วนเรียงตัวอักษรที่เป็น plaintext ที่มีทั้งหมด
for(int i=0; i<=maxChar; i++) {
spText += pText[i]+" ";
}
spText += "\n";

//วนเรียงตัวชี้ลำดับตัวอักษร ที่ผ่านการหารตัดเศษเรียบร้อยแล้ว
for(int i=0; i<=maxChar; i++) {
spText += cText[i]+" ";
}
//กระบวณการอิงอักษร plaintext ที่ป้อนมากับที่มีทั้งหมด
spText += "\nCiphertext = ";
for(int j=0; j<=iText.length-1; j++)
for(int i=0; i<=maxChar; i++) {
//ถ้าที่ plaintext ที่ป้อนเข้ามากับ plaintext ที่กำหนดไว้ตรงกันก็จะแสดงการเข้ารหัส
//โดยที่อ้างถึง plaintext ตามตัวชี้ที่มีค่าที่ได้จากการนำตัวเลขลำดับ บวกกับคีย์ และหารตัดเศษ

if(pText[i] == iText[j]) {
spText += pText[cText[i]];
}
}

} else //จะกระทำเงื่อนไขนี้ ก็ต่อเมื่อต้องการถอดรหัส
{
spText += "Ciphertext = "+text+"\n";
spText += "key = "+key+"\n\n";

//เรียงอักษรที่เป็น plaintext ทั้งหมดแสดงบนหน้าจอ
for(int i=0; i<=maxChar; i++) {
spText += pText[i]+" ";
}
spText += "\n";

//เรียงตัวเลขชี้ลำดับของ plaintext ทั้งหมดแสดงบนหน้าจอ
for(int i=0; i<=maxChar; i++) {
spText += xText[i]+" ";
}
//แสดงตัวเลขลำดับสำหรับอ้างถึงอักษร Ciphertext
spText += "\n\nCiphertext code = ";
for(int j=0; j<=iText.length-1; j++)
for(int i=0; i<=maxChar; i++) {
//ถ้าตัวอักษร plaintext ที่มีนั้น ตรงกับที่ป้อนเข้ามาแล้ว
//ให้เก็บค่าตัวเลขแสดงลำดับไว้ยังตัวแปร และแสดงออกทางหน้าจอ

if(pText[i] == iText[j]) {
ixText[j] = xText[i];
spText += ixText[j]+" ";
}
}
spText += "\n\n";

//วนแสดงอักษร plaintext ที่มีทั้งหมด
for(int i=0; i<=maxChar; i++) {
spText += pText[i]+" ";
}
spText += "\n";

//วนแสดงตัวแปรที่เก็บ ค่าที่ได้จากการนำตัวเลขลำดับ บวกกับคีย์ และหารตัดเศษ
for(int i=0; i<=maxChar; i++) {
spText += cText[i]+" ";
}
//วนแสดง plaintext
spText += "\n\nPlaintext = ";
for(int j=0; j<=iText.length-1; j++)
for(int i=0; i<=maxChar; i++) {
//ถ้าค่าตัวเลขของ plaintext ที่ป้อนเข้ามา ตรงกับ
//ค่าที่ได้จากการนำตัวเลขลำดับ บวกกับคีย์ และหารตัดเศษ
//ก็ให้แสดงตัวอักษร plaintext ที่อ้างถึงโดยตำแหน่ง ที่เท่ากันกับ ตำแหน่งของ
//ตัวแปรที่เก็บค่าที่ได้จากการนำตัวเลขลำดับ บวกกับคีย์ และหารตัดเศษ

if(ixText[j] == cText[i]) {
spText += pText[i];
}
}

}//encry == false

try{
spText = new String(spText.getBytes("ISO8859_1"),"TIS-620");
} catch(java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}

return spText;
}


No comments:

Post a Comment

Blog Comment

บทความที่ได้รับความนิยม