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