Showing posts with label Monoalphabetic algorithm. Show all posts
Showing posts with label Monoalphabetic algorithm. Show all posts

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;
}


Blog Comment

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