*วันนี้ขอฉีกแนว เขียนอะไรหนุกๆหน่อยครับ
สืบเนื่องจากไปซื้อ DVD ลดราคามาหลายเรื่อง และหนึ่งในหลายเรื่องนั้นคือเรื่อง Enigma
ภาพยนตร์เรื่องนี้ได้เคท วินสเล็ท นางเอกไทเทนิคมาเล่น .. อาจจะดูอวบไปนิด -_-'
แต่ก็น่ารักดี ..

หนังพูดถึงเครื่องเข้ารหัสชื่อว่า อีนิคม่า (ตามรูป) หน้าตาคล้ายเครื่องพิมพ์ดีดธรรมดา
แต่เครื่องนี้ถือเป็นสุดยอมคอมพิวเตอร์ในสมัยนั้น .. กล่าวคือ เราจะมีวิธีซ่อนข้อความผ่านเจ้าเครื่องนี้
เริ่มจากเซ็ทเฟืองใหม่ทุกวันๆละ 3 ตัว เฟืองนี้ก็จะมีตัวแปร A-Z ค่าของเฟืองจะแปรผันกับคีย์บอร์ด
เช่น เมื่อพิมพ์ตัว Z ในเฟืองที่ตัวแรกที่หันด้าน Z เอาไว้ ก็อาจจะได้ตัว Z แต่ถ้าหันเป็นด้านอื่นเอาไว้
พิมพ์ตัว Z ก็อาจจะได้ผลเป็นอย่างอื่น ซึ่งความน่าจะเป็นๆไปได้เยอะมาก โดยเฉพาะอย่างยิ่ง เมื่อมีเฟืองถึงสามตัว
ในภาพยนตร์ได้ชี้แจงไว้ว่าความน่าจะเป็นต่อ 1 ตัวอักษร อยู่ที่ 1.5 ล้าน,ล้าน รูปแบบเลยทีเดียว
เจ๋งไหมครับ ^-^
ทีนี้พอดูๆไป ไอ่เราก็อยากจะมีอะไรแบบนี้ไว้เล่นมั่งสิ
แต่จะไปหาเครื่งจักรหน้าตาดีแบบนี ก็คงยาก ..
ก็เลยเปิดหนังสือการโปรแกรมมิ่งแล้วคิดวิธีง่ายๆ ในการลองเข้ารหัสดูแทน
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ออกตัวไว้ก่อนว่า .. ผมเรียนสายศิลป์วาดแต่รูปมาเพียวๆ หากอธิบายอะไรไม่เข้าใจก็ต้องขออภัยไว้ ณ ที่นี้
และรบกวนผู้รู้ ช่วยแจงไว้ด้วย ก็จะเป็นพระคุณมากครับ
ผมคิดง่ายๆว่า ถ้าเอาแค่ให้ข้อความมันไม่เหมือนเดิม = อ่านไม่ออก
ดังนั้น concept ของผมคือ ต้องการนำข้อความมาขยับไป 1 step พยัญชนะครับ
เช่น A ก็จะกลายเป็น B เช่นหากพิมพ์ข้อความว่า ANT เมื่อเข้ารหัสแล้วก็จะได้ข้อความว่า BOU
แน่นอน .. อ่านไม่รู้เรื่องแล้วล่ะ ^-^
ผมเขียนโดยใช้ script ASP classic นะครับ สามารถ copy ไปทดลอง ปรับปรุงกันได้ตามอัธยาศัย
เริ่มจากก็ต้องมีช่องสำหรับพิมพ์ข้อความครับ (form)
<form name="form1" method="post" action="input.asp">
<textarea name="frm_source" cols="50" rows="12" id="frm_source"></textarea>
<input type="submit" name="Submit" value="เข้ารหัส >">
</form>
จาก script ก็เป็นการส่งข้อมูลไปที่ไฟล์ input.asp นะครับ เป็น form แบบพิมพ์ได้หลายๆบรรทัดหน่อย
ส่วนไฟล์เข้ารหัสก็มีข้อมูลดังนี้
'รับค่ามาจาก form ก่อน
frm_source=request.Form("frm_source")
' จากนั้นนำจำนวนข้อความที่ส่งมาว่ามีกี่ตัวอักษร
len_source=len(frm_source)
' วนลูปเท่าจำนวนตัวอักษร
for i=1 to len_source
' ตัดข้อความมาทีละตัวให้เริ่มต้นตัดตามลูป เพราะจะได้ขยับเข้าไปทีละตัวครับ
mid_source=mid(frm_source,i,1)
' แปลงข้อความที่ตัดมาเป็น Ascii code ก่อน จะได้นำไป + หรือ - เพื่อขยับตัวอักษรได้
asc_source=asc(mid_source)
' นำค่า Ascii ที่ได้ไป + 1 เพื่อขยับตัวอักษรขึ้นครับ
end_source=asc_source+1
' แปลงกลับมาเป็นข้อความครับ
chr_source=chr(end_source)
' นำข้อความที่ตัดมาทีละตัว มารวมเข้าเป็นประโยคใหม่อีกครั้ง
if answer="" then
answer=chr_source
else
answer=answer+chr_source
end if
' วนไปทำใหม่มาให้ครบประโยคเดี๋ยวนี้!!
next
เป็นไงมั่งครับ code จริงๆมีนิดเดียวเอง (แต่ตอนคิดอ่ะนาน -_-')
ส่วนที่ธีแปลงกลับก็เช่นกันครับ ทำให้กลับค่ากันเท่านั้นเอง
เหล่านี้เป็นวิธีง่ายๆครับ จริงๆถ้าจะให้สมบูรณ์ คงต้องมีการสุ่มวิธีเข้ารหัส
แล้วมันจะยาวไปถึงอัลกอรึทึ่ม .. ซึ่งมันก็จะเกินสมองทึ่มๆของผมไปแล้วล่ะ 55
ผมได้ทดลอง upload code ไว้เล่นที่
http://www.yimlamai.com/test/index_form.asp
ใครสนใจก็ลองดูได้ครับ
ปล.ข้อเสียของมันก็คือ -_-' ถ้าพิมพ์ว่า 11111 มันก็จะได้ 22222 อ้าว ..
คนอื่นก็รู้หมดอ่ะสิ ว่าเราเขียนวิธีเข้ารหัสไว้ยังไง .. เจ๊ย!!