Python3基礎學習 簡易凱撒密碼

2021-10-10 23:45:00 字數 3043 閱讀 7604

介紹

凱撒密碼,或稱愷撒加密、愷撒變換、變換加密。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照乙個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母a將被替換成d,b變成e,以此類推。

python方法

當前使用python3實現簡單的將字母進行替換,並傳入偏移量,此時我們需要用到python3的內建函式ord()函式,而其配對的函式為chr() 函式【對於8位的ascii字串】或unichr() 函式【對於unicode物件】;

ord函式:它以乙個字元(長度為1的字串)作為引數,返回對應的 ascii 數值,或者 unicode 數值,如果所給的 unicode 字元超出了你的 python 定義範圍,則會引發乙個 typeerror 的異常;

chr函式:即將傳入的ascii 數值轉化為字元,示例**如下:

>>

>

ord(1)

traceback (most recent call last)

: file ""

, line 1,in

ord(1)

typeerror:

ord(

) expected string of length 1

, but int found

>>

>

ord(4)

traceback (most recent call last)

: file ""

, line 1,in

ord(4)

typeerror:

ord(

) expected string of length 1

, but int found

>>

>

ord(

"4")

52>>

>

ord(

"0")

48>>

>

ord(

"100"

)traceback (most recent call last)

: file ""

, line 1,in

ord(

"100"

)typeerror:

ord(

) expected a character, but string of length 3 found

>>

>

ord(

"10"

)traceback (most recent call last)

: file ""

, line 1,in

ord(

"10"

)typeerror:

ord(

) expected a character, but string of length 2 found

>>

>

ord(

"9")

57>>

>

ord(

"a")

97>>

>

chr(

100)

'd'>>

>

chr(58)

':'

實現**

在下方**中我們發現我們在chr內建函式之前沒有使用ord內建函式來獲取ascii碼,直接使用了相加;因為在迴圈字串型別時item已經直接轉為數字型別

>>> def caesar(

): num = int(input(

'請輸入偏移量(1-10):'))

wstr = input(

'請輸入加密的字串:'

).encode(

'utf-8'

) rstr = ''

for item in wstr:

rstr += chr(item+num)

print(

"處理結果:"

,rstr)

return rstr

>>> caesar(

)請輸入偏移量(1-10):3

請輸入加密的字串:asa

處理結果: ***

'***'

另一種寫法可能會更容易理解一些

>>

>

defcaesar()

: num =

int(

input

('請輸入偏移量(1-10):'))

wstr =

input

('請輸入加密的字串:'

) rstr =

''for item in wstr:

rstr +=

chr(

ord(item)

+num)

print

("處理結果:"

,rstr)

return rstr

>>

> caesar(

)請輸入偏移量(1-

10):3

請輸入加密的字串:asa

處理結果: ***

'***'

因為在使用input輸入時我們使用了encode(『utf-8』)導致我們的字串已經修改,在迴圈輸出時已轉為數字,b』a』 即 b』\x61』 實際記憶體中為 [0110 0001] ,因此在迴圈輸出時輸出為數字 示例如下:

>>

>

"asa"

.encode(

'utf-8'

)b'asa'

>>

>

for item in b'asa'

:print

(item)

97115

97>>

>

for item in b'as聖誕節'

:print

(item)

syntaxerror:

bytes can only contain ascii literal characters.

python3實現凱撒加密

愷撒密碼是一種替換加密方式技術。它的加密原理是明文中的所有字母都在字母表上向後 或向前 按照乙個固定數目進行偏移後被替換成密文。根據偏移量的不同,還存在若干特定的愷撒密碼名稱 例如,當偏移量是左移3的時候 解密時的金鑰就是3 明文本母表 abcdefghijklmnopqrstuvwxyz 密文字母...

python3簡易安裝pip

安裝python3.x 這裡不多贅述,so easzy!2.上傳包到伺服器 3.解壓 tar xf python 3.5.2.tar.xz4.編譯安裝 注意 注意 在編譯之前需要安裝一些必須的依賴,否則當報錯的時候還得重新編譯 我就是吃了這個虧,千萬要注意奧。安裝必要依賴 至少需要如下兩個,我個人就...

Python學習(一) python3基礎

主要參考廖雪峰的python教程 不斷的學習才能不斷發現好東西!富而不驕易,窮而不怨難 整數 int 浮點數 float 字串 str 布林值 bool 空值 nonetype 變數 常量 list 是一種有序的集合,可以隨時新增和刪除其中的元素 用索引來訪問list中每乙個位置的元素,記得索引是從...