你真的瞭解編程加密的原理嗎?

加密算法是編程語言中非常常見的一個應用,比如用戶在進行密碼設置的時候,絕大多數情況加,程序員都會採用加密的形式進行密碼存儲(爲什麼說是絕大多數呢,facebook曾曝出明文密碼存儲的問題),那加密到底是怎麼回事呢?
先列舉出生活中的一些加密的例子,最常見的加密其實就是語言加密,什麼叫做語言加密呢?
通俗的解釋就是我們平時所說的話,比如英語、我們國家各地區的方言,我們都可以把它們理解成是一種加密。當我們在學習這門語言的時候,也就是解密的過程,當我們完全掌握了這門語言,也就掌握了它的破解方式。
比如我們在學習英語,那麼其實就是要掌握各種解密的方式。這種理解方式相信大家都能夠明白。

在這裏插入圖片描述

發送信息之前加密,接收到信息首先解密
在代碼中我們也同樣是使用某一種規則來進行加密,比如常見的md5等。
下面我們使用凱撒密碼來進行一段話的加密演示。
加密的步驟都是首先需要制定一個加密規則,下面則是我們制定的加密規則

在這裏插入圖片描述

左側爲原始字符,右側爲加密後的字符
這裏我們採用每一個字母都向後移動13個字母的形式來進行加密或者是解密。其中還有一個細節,字母A加密爲字母N,字母N同樣能夠加密成字母A。也就是說加密和解密兩個方向上是完全相同的,也就是說我們可以採用相同的祕鑰值來進行加密和解密,這個祕鑰值就是13。爲什麼說是13呢?英文一共包含26個字母,這個13就意味着我們要將每一個字母都向後挪13個,當挪到結尾的時候再從頭開始,可以理解成形成一個圈。
我們先來嘗試一下手動加密和解密一個單詞,當然這個過程反向也是成立的。
HELLO(加密)->URYYB(解密)->HELLO

這裏還有一個小的知識點需要進行講解,上述的加密表中,我們所採用的都是大寫字母對應的形式,那麼在Python中,我們要如何能夠將所有的字母全部轉換成大寫呢?這個方法很簡單,他的名字就是upper
我們可以這樣來使用它: "hello".upper() 這樣返回的結果就變成了HELLO,它會把所有的小寫字母都變成大寫,我們也可以採用將小寫字母對應的十進制值減去26來進行小寫變大寫的轉換。這個轉換方法其實就是通過ASCII碼錶來進行。
除此之外,還有一個細節,就是上面我們提到過的祕鑰值是13,爲什麼說是13呢?因爲鍵盤上的每一個符號都對應着一個數字,這個對照表就叫做ASCII表,下圖就是一張ASCII碼錶

在這裏插入圖片描述

圖片爲互聯網搜索結果
圖中用紅色框圈住的部分就是大寫英文字母對應的十進制的數字。在Python中,我們可以使用ord函數和chr函數分別進行字母和十進制數字之間的轉換,這樣做的目的就是能夠讓這些字母像數字一樣進行加減法的運算。我們定義的加密算法中,兩個字母之間對應十進制數字相減就是13,所以這個祕鑰值就是13
ord函數是將字母轉換爲數字,例如:ord("A"),結果是65
chr函數是將數字轉換爲字母,例如:chr(65),結果是A
這些都明白了之後,我們就可以進一步的寫一下我們的加密小程序了。
首先我們需要有一段消息,這段消息可以是自定義的,也可以是用戶輸入的,這裏我們將展示一下用戶輸入的方式。

在這裏插入圖片描述

完整的代碼展示
運行代碼後,讓我們輸入一段話,這裏我輸入: I will always love you !!!!!

在這裏插入圖片描述

綠色字體爲我輸入的字體,加密後的結果已經被打印。
大家可以嘗試一下自己的加密小程序試試哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章