Keep your secrets with yours.

	public byte[] encrypt(byte[] src) throws Exception {

		try {
			Cipher c = Cipher.getInstance(mode);
			c.init(Cipher.ENCRYPT_MODE, aesKey);

			return c.doFinal(src);
		} catch (Exception ex) {
			throw ex;
		}
	}

On the above code, the important lines are at line 76, 77 and 79. First of all, line 76 declare variable c from class Cipher which get from import line 5 “javax.crypto.Cipher” with the parameter mode which the specify mode in this project is “AES/ECB/PKCS5Padding”. Then, at line 77, the encryption start initializes process of encryption with parameter Cipher.ENCRYPT_MODE and the parameter of encryption key control which got from the prior step that already explained on the former page (page 7). Finally, at line 79, the last process use the parameter that you type as an input parameter of method doFinal for encrypting process which will return the result and then the result also returns back to the caller method of page 6 at line 49.

รหัสโปรแกรมข้างบน มีบรรทัดที่สำคัญอยู่ 3 บรรทัด คือ บรรทัดที่ 76 77 และ 79. เริ่มต้นจากบรรทัดที่ 76 เป็นการกำหนดตัวแปร c โดย class ชื่อ Cipher ซึ่ง import จากไฟล์ “javax.crypto.Cipher” ณ.บรรทัดที่ 5 ด้วยการส่งพารามิเตอร์ mode ซึ่งในโปรเจคท์นี้ใช้ “AES/ECB/PKCS5Padding” ในการเข้ารหัสข้อมูล จากนั้น ที่บรรทัด 77 เป็นการเริ่มต้นเรียกใช้ฟังก์ชั่นสำหรับดำเนินการการเข้ารหัส โดยส่งผ่านพารามิเตอร์สำหรับกำหนดการทำงานให้ 2 ตัวคือ  Cipher.ENCRYPT_MODE และรหัสควบคุมการเข้ารหัสที่ได้จากขั้นตอนก่อนหน้าที่อธิบายไปแล้วในหน้า 7 ท้ายที่สุดสำหรับกระบวนการเข้ารหัส โดยใช้ค่าข้อมูลที่คุณพิมพ์ใส่ที่หน้าจอเป็นพารามิเตอร์ส่งให้เพื่อให้ได้ผลลัพธ์จากการเข้ารหัสคืนกลับมาจาก method ชื่อ doFinal และเมื่อได้ผลลัพธ์มา ก็จะส่งผลลัพธ์ต่อกลับไปยังส่วนที่เรียกใช้งาน method encrypt นี้ที่หน้า 6 บรรทัดที่ 49

	public byte[] decrypt(byte[] src) throws Exception {

		try {
			Cipher c = Cipher.getInstance(mode);
			c.init(Cipher.DECRYPT_MODE, aesKey);

			return c.doFinal(src);
		} catch (Exception ex) {
			throw ex;
		}
	}

On the other hand, The code above supporting the decryption process which was called by the line 66 on page 6. The important lines are 97, 98 and 100 which do something like the encryption process. It has 2 different points in line 98 and line 100. That is, it uses Cipher.DECRYPT_MODE instead of Cipher.ENCRYPT_MODE and the variable “src” contain the result from the former method encryption process.

ในอีกด้านหนึ่ง โปรแกรมข้างบน ใช้สำหรับรองรับการทำงานในส่วนของการถอดรหัส ซึ่งถูกเรียกใช้จากโปรแกรมบรรทัดที่ 66 ที่แสดงไว้ในหน้าที่ 6 โดยมีบรรทัดที่สำคัญอยู่ 3 บรรทัดและดำเนินการคล้ายกับกระบวนการเข้ารหัส มันมีจุดที่แตกต่างกันอยู่ 2 จุด จุดแรกคือ การใช้ Cipher.DECRYPT_MODE แทน Cipher.ENCRYPT_MODE และจุดที่สองคือตัวแปร “src” นั้นเก็บค่าที่ได้จากผลลัพธ์จากการเข้ารหัสจาก method ก่อนหน้าของกระบวนการเข้ารหัส

Finally, this chapter is ending here. I hope you can understand all important lines which I explained. On next chapter, I will show you the program of mine which is modified for using the stronger encryption than AES/EBC.

ในที่สุด ก็มาถึงจุดสิ้นสุดของบทนี้ ผมหวังว่าคุณคงเข้าใจบรรทัดที่สำคัญๆทั้งหมดที่ผมได้อธิบายไป ในบทต่อไป ผมจะแสดงโปรแกรมที่ผมปรับปรุงเพิ่มเพื่อให้คุณได้เห็นการเข้ารหัสที่มีความแข็งแกร่งกว่า AES/EBC 

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *