Oct 28, 2009

Generating the Keystream Letters

ဒီမွာ အဓိကက်တာ keystream ဆုိတာေျပာခဲ့ျပီးပါျပီ ..အဲဒီ keystream ကုိ solitaire ကေန ဘယ္လုိထုတ္မလဲ .. Solitaire ဟာ keystream ကုိ ဖဲထုတ္ကုိ အသံုးျပဳျပီးေဖာ္ရပါတယ္ ။ ဖဲထုတ္မွာ 13*4=52 + 2 joker = 54 cards ရွိပါတယ္။ ဖဲထုတ္မွာ ကတ္ေတြ တည္ရွိေနႏုိင္ပံုက 54 ! = 2.31*10^71 ေလာက္ျဖစ္ႏုိင္ပါတယ္။ solitaire အသံုးျပဳဖုိ႕အတြက္ အဲဒီ 54 ကတ္လံုးကုိ အသံုးျပဳပါမယ္ ။ joker ႏွစ္ခုရွိတာကုိ တစ္ခုစီကုိ သီးျခားမွတ္သားထားပါ ။ ေနာက္ပုိင္းမွာ joker A နဲ႔ joker B ဆုိျပီးအသံုးျပဳမွာ ျဖစ္ပါတယ္။ (အမွတ္အသားကုိေတာ့ joker ေပၚမွာပဲ တစ္ခုေပၚမွာ A ၊ တစ္ခုေပၚမွာ B လုိ႔ ေရးထားရင္ လံုေလာက္ပါျပီ ) solitaire ကေန keystream ကုိ ေအာက္ပါ အဆင့္မ်ားအတုိင္းလုပ္ျပီး ေဖာ္ရပါမယ္။
၁။ joker A ကုိရွာပါ။ အဲဒီ joker ကုိယူျပီး ေအာက္ဘက္ကုိ တစ္ကတ္ေရႊ႕ပါ။
၂။ joker B ကုိရွာပါ။ အဲဒီ joker ကုိယူျပီး ေအာက္ဘက္ကုိ ႏွစ္ကတ္ေရႊ႕ပါ။ဖဲခ်ပ္ေတြကုိ အေပၚဆံုးနဲ႔ ေအာက္ဆံုးဖဲခ်ပ္က ဆက္ေနတယ္လုိ႔ ယူဆေပးပါ။
ဥပမာ ၁။ ဖဲခ်ပ္တည္ေနပံုက A 7 2 B 9 4 1 ဆုိပါစုိ႔ ။ step 2 ျပီးသြားတဲ့ အခ်ိန္မွာေတာ့ ေအာက္ပါအတုိင္းျဖစ္ေနပါလိမ့္မယ္။ 7 A 2 9 4 B 1
ဥပမာ ၂။ ဖဲခ်ပ္တည္ေနပံုက 3 A B 8 9 6 ဆုိပါစုိ႔ ။ step 2 ျပီးသြားတဲ့ အခ်ိန္မွာေတာ့ ေအာက္ပါအတုိင္းျဖစ္ေနပါလိမ့္မယ္။
3 A 8 B 9 6
၃။ Triple cut လုိ႔ေခၚပါတယ္။ joker A နဲ႔ B ကုိ ရွာပါ ။ joker A နဲ႔ B ရဲ႕ ၾကားထဲက ဖဲခ်ပ္မ်ားကုိ ခ်န္ျပီး joker ရဲ႕ အေပၚနဲ႔ ေအာက္က ဖဲခ်ပ္မ်ား ကုိ တစ္ခု နဲ႔ တစ္ခု ေနရာခ်ိန္းပါ။ joker ဖဲခ်ပ္က A ျဖစ္ျဖစ္ B ျဖစ္ျဖစ္ ရပါတယ္ ။
ဥပမာ။
2 4 6 B 5 8 7 1 A 3 9 ဆုိရင္ Triple cut လုပ္ျပီးတဲ့အခါမွာ 3 9 B 5 8 7 1 A 2 4 6 ျဖစ္သြားပါလိမ့္မယ္။ အကယ္လုိ႔ joker က ထိပ္ဆံုး သုိ႔ ေအာက္ဆံုးကုိ ေရာက္ေနရင္လည္း ေအာက္ပါအတုိင္းေနရာလဲပါ။
B 5 8 7 1 A 3 9 ဆုိပါစုိ႔ ။
3 9 B 5 8 7 1 A ျဖစ္သြားပါမယ္ ။
B 5 8 7 1 A ကေတာ့ မေျပာင္းလဲပါဘူး ။
၄။ Count cut လုိ႔ ေခၚပါတယ္ ။ ဖဲထုပ္ေအာက္ဆံုးကတ္ကုိ ၾကည့္ပါမယ္။ သူ႔တန္ဖုိးအတုိင္း အေပၚဆံုး ကတ္ကေန စေရတြက္ျပီးယူပါမယ္ ။ ျပီးရင္ အဲဒီကတ္ေတြကုိ ေအာက္ဆံုးကတ္ရဲ႕ ေရွ႕မွာ ကပ္ျပီးထည့္ပါမယ္။ ကတ္တန္ဖုိးယူတဲ့အခါမွာ ညွင္း . ေဒါင့္ . ဟတ္ . စပိတ္ ဆုိျပီးစီရပါမယ္ ။ ဆုိလုိတာက ညွင္းဆုိရင္ မူရင္း တန္ဖုိး ေဒါင့္ ဆုိရင္ မူရင္းတန္ဖုိး + ၁၃ ျဖစ္ပါမယ္ ။ဟတ္ဆုိရင္ မူရင္းတန္ဖုိး+၂၆ ျဖစ္ပါမယ္ ။ joker ႏွစ္ခုလံုး တန္ဖုိးကုိေတာ့ ၅၃ လုိ႔ပဲ ယူဆပါမယ္ ။ ၅၃ ဆုိရင္ေတာ့ ဖဲထုပ္ဟာ ဒီအတုိင္းပဲ ရွိေနမွာ ျဖစ္ပါတယ္ ။(ဖဲ ၅၄ ခ်ပ္ သာရွိလုိ႔ပါ)
ဥပမာ။ ….. 4 5 ….. … 8 9 ဆုိပါေတာ့ ။ ေရွ႕ဆုံးကေနျပီး ၉ ကတ္ေျမာက္က ၄ ျဖစ္မယ္ဆုိရင္ ၄ အထိ ကတ္ေတြအားလံုးကုိ ယူျပီး ေနာက္ဆံုးကတ္ျဖစ္တဲ့ ၉ ရဲ႕ အေရွ႕မွာကပ္ထားရပါမယ္ ။ ဒါဆုိရင္ 5…. ……. 8 …. .. … .4 9 ျဖစ္သြား ပါလိမ့္မယ္။
၅။ Output card ကုိရွာပါမယ္။ ဖဲထုပ္အေပၚဆံုးအခ်ပ္ကုိ ၾကည့္ပါ။ သူ႕တန္ဖုိးအတုိင္း အေပၚဆံုးကေန စျပီး ေရတြက္ပါ။ က်တဲ့ကတ္က ပထမဆံုး output card ပါပဲ။ ကတ္ေတြရဲ႕ တန္ဖုိးကုိေတာ့ အဆင့္ (၄)မွာ ယူတဲ့ အတုိင္းယူပါ။ အကယ္လုိ႔ က်တဲ့ကတ္က joker ဆုိရင္ေတာ့ keystream မွာ အဲဒီေနရာမွာ null လုိ႔ ယူဆ ပါမယ္။
၆။ Output card ကေန number ကုိေျပာင္းပါမယ္။ေအာက္ပါအတုိင္းေျပာင္းပါ။
၁ ညွင္း မွ ကင္း ညွင္း အထိ ၁ မွ ၁၃
၁ ေဒါင့္ မွ ကင္း ေဒါင့္ အထိ ၁၄ မွ ၂၆
၁ ဟတ္ မွ ကင္း ဟတ္ အထိ ၁ မွ ၁၃
၁ စပိတ္ မွ ကင္း စပိတ္ အထိ ၁၄ မွ ၂၆
ဒါဆုိရင္ ကၽြန္ေတာ္တုိ႔ဟာ solitaire ကုိ အသံုးျပဳျပီး အကၡရာတစ္လံုးကုိ ဘယ္လုိ ေဖာ္သလဲဆုိတာ သိေလာက္ ပါျပီ။ ၾကိဳက္သေလာက္ keystream စာလံုးအေရအတြက္ကုိ ဖန္တီးလုိ႔ ရပါတယ္။

No comments:

Post a Comment