吳俊杰
編碼和解碼的過程是一個通訊雙方都知道編碼規(guī)則的過程,但是如果通訊的過程是通過開放信道傳輸?shù)?,如聲音或者無線電波,任何人都能夠接收得到,因此那些信源不希望成為信宿的信號接受者,通過密碼的破譯,掌握了編碼規(guī)則,就會對信息安全和保密造成損害。一系列的信息安全事件常常是因為密碼失竊而產(chǎn)生的。那么如何設(shè)定一個安全的密碼,不僅僅是需要將一些規(guī)則簡單地灌輸給學(xué)生,更可以通過信息技術(shù)實驗的方法,發(fā)起一場密碼攻防站,這樣,我們相信,當(dāng)硝煙散去,學(xué)生對密碼編制的一些規(guī)則也有了更進(jìn)一步的理解。信息安全已經(jīng)成為了關(guān)系到國計民生的一個重要領(lǐng)域,而密碼的破譯對于青少年來說既神秘又好奇,如果我們可以通過信息技術(shù)實驗的方法將其去魅,使其成為一個小實驗,這樣既提升了學(xué)生對程序?qū)W習(xí)的興趣,又加深了對一些重要算法的理解。密碼破譯的過程便可從一個最簡單的數(shù)字密碼開始。
● 密碼的設(shè)定
如果我們設(shè)定的密碼是一個由數(shù)字0到9構(gòu)成的三位字符串,則密碼應(yīng)該包含從000到999,共計1000種組合,如果使用的方法,二位數(shù)和一位數(shù)需要在前面補(bǔ)0,具體的算法是如圖1所示。
● 密碼的破譯
設(shè)定了一個三位的密碼之后,接下來就是密碼破譯的工作了,最簡單的方法是如果已知這是一個三位的密碼,從0逐次增加,直到猜想的密碼和設(shè)定的密碼一致為止(如圖2)。當(dāng)然,在這個過程中也要注意將一位數(shù)和二位數(shù)補(bǔ)齊的問題,其中涉及一個類似數(shù)學(xué)上的分類討論的方法。
● 影響破譯時間的因素
1.密碼的數(shù)值
信息技術(shù)實驗倡導(dǎo)學(xué)生研究穩(wěn)定的對應(yīng)關(guān)系,一個基本的方法就是信息的全記錄,記錄過程中的數(shù)據(jù),并且探索其中的規(guī)律,多次實驗是一個重要的方法,如果我們記錄每一次破譯密碼的時間和破譯出的密碼數(shù)值,從當(dāng)前的算法來看,密碼是從小到大枚舉的,如果是這樣數(shù)值越大的密碼需要的破譯時間就會越長。這需要獲取數(shù)據(jù)并進(jìn)行研究,用鏈表記錄密碼破譯的結(jié)果和所需時間(如圖3)。測定的20組數(shù)據(jù)的散點(diǎn)圖如圖4所示。
通過擬合,我們不難看出一次項系數(shù)0.027恰好是程序循環(huán)一次所需要的時間,而這比標(biāo)準(zhǔn)的循環(huán)時間0.025秒多出了一部分時間,產(chǎn)生這種差異的原因應(yīng)該是循環(huán)體內(nèi)的邏輯判斷。
2.執(zhí)行模式
使用編輯菜單中的設(shè)置單步執(zhí)行程式下的超速模式,執(zhí)行的速度會明顯增加,如果使用多次測量求和的方法,完成20次破譯的時間提速為超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密碼破譯的速度。
3.改進(jìn)算法
使用圖5的代碼,替代了之前的且邏輯的方法,減少了邏輯判斷的次數(shù),預(yù)計會使得解密的速度加快。
實驗發(fā)現(xiàn),破解100次密碼,新的方法需要14.5秒,而舊的方法需要23.5秒,因此改進(jìn)算法也能較大程度上提高程序的破解效率。
● 密碼的復(fù)雜度
最后,我們回到一個常識上來,密碼的位數(shù)越復(fù)雜,破解所需要的時間越長,我們將密碼長度由3位提升到4位之后,對應(yīng)100次破解的時間也增加了10倍為144.7秒,可以想象,如果密碼增加了26個字母的大寫或者小寫,那么從52個字母中選擇其中的一個,密碼破解的時間會增大多少倍。
因此進(jìn)行密碼的破譯的實驗,一方面是讓學(xué)生通過具體的實踐,體味提升密碼安全的重要性;另一方面用實驗的方法,促使學(xué)生了解了影響破譯速度的幾個因素,即密碼數(shù)值、循環(huán)速度、破譯算法和密碼位數(shù),并且通過數(shù)據(jù)分析驗證了猜想、獲得了新知,對信息技術(shù)實驗中的核心概念:數(shù)據(jù)、穩(wěn)定的對應(yīng)關(guān)系、效率有了進(jìn)一步的理解。最后,密碼學(xué)和密碼破譯是應(yīng)用數(shù)學(xué)和信息技術(shù)結(jié)合的一個重要領(lǐng)域,關(guān)系國家安全和每個人的信息素養(yǎng),如果學(xué)生希望進(jìn)一步研究,還需要補(bǔ)充大量的知識。舉個最簡單的例子,如果我們將四位的數(shù)值增加到五位,增加一個小寫字母,插入到四位數(shù)字當(dāng)中的任何一個位置,這個程序的密碼設(shè)定和密碼破解恐怕就超出了Scratch這種圖形化編程語言的極限了,學(xué)生自然地需要學(xué)習(xí)Python、C或者Java這種代碼語言,這是側(cè)重于一種算法和挑戰(zhàn)計算機(jī)性能的競賽,而信息技術(shù)實驗的一般方法和過程將始終在這個競賽中充當(dāng)重要角色。endprint
編碼和解碼的過程是一個通訊雙方都知道編碼規(guī)則的過程,但是如果通訊的過程是通過開放信道傳輸?shù)?,如聲音或者無線電波,任何人都能夠接收得到,因此那些信源不希望成為信宿的信號接受者,通過密碼的破譯,掌握了編碼規(guī)則,就會對信息安全和保密造成損害。一系列的信息安全事件常常是因為密碼失竊而產(chǎn)生的。那么如何設(shè)定一個安全的密碼,不僅僅是需要將一些規(guī)則簡單地灌輸給學(xué)生,更可以通過信息技術(shù)實驗的方法,發(fā)起一場密碼攻防站,這樣,我們相信,當(dāng)硝煙散去,學(xué)生對密碼編制的一些規(guī)則也有了更進(jìn)一步的理解。信息安全已經(jīng)成為了關(guān)系到國計民生的一個重要領(lǐng)域,而密碼的破譯對于青少年來說既神秘又好奇,如果我們可以通過信息技術(shù)實驗的方法將其去魅,使其成為一個小實驗,這樣既提升了學(xué)生對程序?qū)W習(xí)的興趣,又加深了對一些重要算法的理解。密碼破譯的過程便可從一個最簡單的數(shù)字密碼開始。
● 密碼的設(shè)定
如果我們設(shè)定的密碼是一個由數(shù)字0到9構(gòu)成的三位字符串,則密碼應(yīng)該包含從000到999,共計1000種組合,如果使用的方法,二位數(shù)和一位數(shù)需要在前面補(bǔ)0,具體的算法是如圖1所示。
● 密碼的破譯
設(shè)定了一個三位的密碼之后,接下來就是密碼破譯的工作了,最簡單的方法是如果已知這是一個三位的密碼,從0逐次增加,直到猜想的密碼和設(shè)定的密碼一致為止(如圖2)。當(dāng)然,在這個過程中也要注意將一位數(shù)和二位數(shù)補(bǔ)齊的問題,其中涉及一個類似數(shù)學(xué)上的分類討論的方法。
● 影響破譯時間的因素
1.密碼的數(shù)值
信息技術(shù)實驗倡導(dǎo)學(xué)生研究穩(wěn)定的對應(yīng)關(guān)系,一個基本的方法就是信息的全記錄,記錄過程中的數(shù)據(jù),并且探索其中的規(guī)律,多次實驗是一個重要的方法,如果我們記錄每一次破譯密碼的時間和破譯出的密碼數(shù)值,從當(dāng)前的算法來看,密碼是從小到大枚舉的,如果是這樣數(shù)值越大的密碼需要的破譯時間就會越長。這需要獲取數(shù)據(jù)并進(jìn)行研究,用鏈表記錄密碼破譯的結(jié)果和所需時間(如圖3)。測定的20組數(shù)據(jù)的散點(diǎn)圖如圖4所示。
通過擬合,我們不難看出一次項系數(shù)0.027恰好是程序循環(huán)一次所需要的時間,而這比標(biāo)準(zhǔn)的循環(huán)時間0.025秒多出了一部分時間,產(chǎn)生這種差異的原因應(yīng)該是循環(huán)體內(nèi)的邏輯判斷。
2.執(zhí)行模式
使用編輯菜單中的設(shè)置單步執(zhí)行程式下的超速模式,執(zhí)行的速度會明顯增加,如果使用多次測量求和的方法,完成20次破譯的時間提速為超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密碼破譯的速度。
3.改進(jìn)算法
使用圖5的代碼,替代了之前的且邏輯的方法,減少了邏輯判斷的次數(shù),預(yù)計會使得解密的速度加快。
實驗發(fā)現(xiàn),破解100次密碼,新的方法需要14.5秒,而舊的方法需要23.5秒,因此改進(jìn)算法也能較大程度上提高程序的破解效率。
● 密碼的復(fù)雜度
最后,我們回到一個常識上來,密碼的位數(shù)越復(fù)雜,破解所需要的時間越長,我們將密碼長度由3位提升到4位之后,對應(yīng)100次破解的時間也增加了10倍為144.7秒,可以想象,如果密碼增加了26個字母的大寫或者小寫,那么從52個字母中選擇其中的一個,密碼破解的時間會增大多少倍。
因此進(jìn)行密碼的破譯的實驗,一方面是讓學(xué)生通過具體的實踐,體味提升密碼安全的重要性;另一方面用實驗的方法,促使學(xué)生了解了影響破譯速度的幾個因素,即密碼數(shù)值、循環(huán)速度、破譯算法和密碼位數(shù),并且通過數(shù)據(jù)分析驗證了猜想、獲得了新知,對信息技術(shù)實驗中的核心概念:數(shù)據(jù)、穩(wěn)定的對應(yīng)關(guān)系、效率有了進(jìn)一步的理解。最后,密碼學(xué)和密碼破譯是應(yīng)用數(shù)學(xué)和信息技術(shù)結(jié)合的一個重要領(lǐng)域,關(guān)系國家安全和每個人的信息素養(yǎng),如果學(xué)生希望進(jìn)一步研究,還需要補(bǔ)充大量的知識。舉個最簡單的例子,如果我們將四位的數(shù)值增加到五位,增加一個小寫字母,插入到四位數(shù)字當(dāng)中的任何一個位置,這個程序的密碼設(shè)定和密碼破解恐怕就超出了Scratch這種圖形化編程語言的極限了,學(xué)生自然地需要學(xué)習(xí)Python、C或者Java這種代碼語言,這是側(cè)重于一種算法和挑戰(zhàn)計算機(jī)性能的競賽,而信息技術(shù)實驗的一般方法和過程將始終在這個競賽中充當(dāng)重要角色。endprint
編碼和解碼的過程是一個通訊雙方都知道編碼規(guī)則的過程,但是如果通訊的過程是通過開放信道傳輸?shù)?,如聲音或者無線電波,任何人都能夠接收得到,因此那些信源不希望成為信宿的信號接受者,通過密碼的破譯,掌握了編碼規(guī)則,就會對信息安全和保密造成損害。一系列的信息安全事件常常是因為密碼失竊而產(chǎn)生的。那么如何設(shè)定一個安全的密碼,不僅僅是需要將一些規(guī)則簡單地灌輸給學(xué)生,更可以通過信息技術(shù)實驗的方法,發(fā)起一場密碼攻防站,這樣,我們相信,當(dāng)硝煙散去,學(xué)生對密碼編制的一些規(guī)則也有了更進(jìn)一步的理解。信息安全已經(jīng)成為了關(guān)系到國計民生的一個重要領(lǐng)域,而密碼的破譯對于青少年來說既神秘又好奇,如果我們可以通過信息技術(shù)實驗的方法將其去魅,使其成為一個小實驗,這樣既提升了學(xué)生對程序?qū)W習(xí)的興趣,又加深了對一些重要算法的理解。密碼破譯的過程便可從一個最簡單的數(shù)字密碼開始。
● 密碼的設(shè)定
如果我們設(shè)定的密碼是一個由數(shù)字0到9構(gòu)成的三位字符串,則密碼應(yīng)該包含從000到999,共計1000種組合,如果使用的方法,二位數(shù)和一位數(shù)需要在前面補(bǔ)0,具體的算法是如圖1所示。
● 密碼的破譯
設(shè)定了一個三位的密碼之后,接下來就是密碼破譯的工作了,最簡單的方法是如果已知這是一個三位的密碼,從0逐次增加,直到猜想的密碼和設(shè)定的密碼一致為止(如圖2)。當(dāng)然,在這個過程中也要注意將一位數(shù)和二位數(shù)補(bǔ)齊的問題,其中涉及一個類似數(shù)學(xué)上的分類討論的方法。
● 影響破譯時間的因素
1.密碼的數(shù)值
信息技術(shù)實驗倡導(dǎo)學(xué)生研究穩(wěn)定的對應(yīng)關(guān)系,一個基本的方法就是信息的全記錄,記錄過程中的數(shù)據(jù),并且探索其中的規(guī)律,多次實驗是一個重要的方法,如果我們記錄每一次破譯密碼的時間和破譯出的密碼數(shù)值,從當(dāng)前的算法來看,密碼是從小到大枚舉的,如果是這樣數(shù)值越大的密碼需要的破譯時間就會越長。這需要獲取數(shù)據(jù)并進(jìn)行研究,用鏈表記錄密碼破譯的結(jié)果和所需時間(如圖3)。測定的20組數(shù)據(jù)的散點(diǎn)圖如圖4所示。
通過擬合,我們不難看出一次項系數(shù)0.027恰好是程序循環(huán)一次所需要的時間,而這比標(biāo)準(zhǔn)的循環(huán)時間0.025秒多出了一部分時間,產(chǎn)生這種差異的原因應(yīng)該是循環(huán)體內(nèi)的邏輯判斷。
2.執(zhí)行模式
使用編輯菜單中的設(shè)置單步執(zhí)行程式下的超速模式,執(zhí)行的速度會明顯增加,如果使用多次測量求和的方法,完成20次破譯的時間提速為超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密碼破譯的速度。
3.改進(jìn)算法
使用圖5的代碼,替代了之前的且邏輯的方法,減少了邏輯判斷的次數(shù),預(yù)計會使得解密的速度加快。
實驗發(fā)現(xiàn),破解100次密碼,新的方法需要14.5秒,而舊的方法需要23.5秒,因此改進(jìn)算法也能較大程度上提高程序的破解效率。
● 密碼的復(fù)雜度
最后,我們回到一個常識上來,密碼的位數(shù)越復(fù)雜,破解所需要的時間越長,我們將密碼長度由3位提升到4位之后,對應(yīng)100次破解的時間也增加了10倍為144.7秒,可以想象,如果密碼增加了26個字母的大寫或者小寫,那么從52個字母中選擇其中的一個,密碼破解的時間會增大多少倍。
因此進(jìn)行密碼的破譯的實驗,一方面是讓學(xué)生通過具體的實踐,體味提升密碼安全的重要性;另一方面用實驗的方法,促使學(xué)生了解了影響破譯速度的幾個因素,即密碼數(shù)值、循環(huán)速度、破譯算法和密碼位數(shù),并且通過數(shù)據(jù)分析驗證了猜想、獲得了新知,對信息技術(shù)實驗中的核心概念:數(shù)據(jù)、穩(wěn)定的對應(yīng)關(guān)系、效率有了進(jìn)一步的理解。最后,密碼學(xué)和密碼破譯是應(yīng)用數(shù)學(xué)和信息技術(shù)結(jié)合的一個重要領(lǐng)域,關(guān)系國家安全和每個人的信息素養(yǎng),如果學(xué)生希望進(jìn)一步研究,還需要補(bǔ)充大量的知識。舉個最簡單的例子,如果我們將四位的數(shù)值增加到五位,增加一個小寫字母,插入到四位數(shù)字當(dāng)中的任何一個位置,這個程序的密碼設(shè)定和密碼破解恐怕就超出了Scratch這種圖形化編程語言的極限了,學(xué)生自然地需要學(xué)習(xí)Python、C或者Java這種代碼語言,這是側(cè)重于一種算法和挑戰(zhàn)計算機(jī)性能的競賽,而信息技術(shù)實驗的一般方法和過程將始終在這個競賽中充當(dāng)重要角色。endprint