Python密碼學(xué)XOR算法編碼流程及乘法密碼教程
在本章中,讓我們了解XOR過(guò)程及其在Python中的編碼以及乘法密碼的教程
XOR算法
XOR算法的加密和解密轉(zhuǎn)換ASCII字節(jié)格式的純文本,并使用XOR過(guò)程將其轉(zhuǎn)換為指定的字節(jié).它為用戶提供以下優(yōu)勢(shì) :
- 快速計(jì)算
- 沒(méi)有區(qū)別標(biāo)記左側(cè)和右側(cè)
- 易于理解和分析
代碼
您可以使用以下代碼執(zhí)行XOR過(guò)程 :
def?xor_crypt_string(data,?key?=?'awesomepassword',?encode?=?False,?decode?=?False): ???from?itertools?import?izip,?cycle ???import?base64 ???if?decode: ??????data?=?base64.decodestring(data) ???xored?=?''.join(chr(ord(x)?^?ord(y))?for?(x,y)?in?izip(data,?cycle(key))) ???if?encode: ??????return?base64.encodestring(xored).strip() ???return?xored secret_data?=?"XOR?procedure" print("The?cipher?text?is") print?xor_crypt_string(secret_data,?encode?=?True) print("The?plain?text?fetched") print?xor_crypt_string(xor_crypt_string(secret_data,?encode?=?True),?decode?=?True)
輸出
XOR流程的代碼為您提供以下輸出 :
說(shuō)明
- 函數(shù) xor_crypt_string()包括一個(gè)參數(shù),用于指定編碼和解碼模式以及字符串值.
- 基本功能是使用base64模塊進(jìn)行的,這些模塊遵循XOR過(guò)程/操作來(lái)加密或解密純文本/密文.
注意 : XOR加密用于加密數(shù)據(jù),并且難以通過(guò)強(qiáng)力方法破解,即通過(guò)生成隨機(jī)加密密鑰以匹配正確的密文.
乘法密碼
使用凱撒密碼技術(shù)時(shí),加密和解密符號(hào)涉及使用簡(jiǎn)單的加法或減法基本過(guò)程將值轉(zhuǎn)換為數(shù)字.
如果使用乘法轉(zhuǎn)換為密文,它被稱(chēng)為環(huán)繞情況.考慮使用的字母和相關(guān)數(shù)字如下所示 :
這些數(shù)字將用于乘法過(guò)程,相關(guān)密鑰為7.在這種場(chǎng)景中用于生成乘法密碼的基本公式如下 :
(Alphabet Number * key)mod(total number of alphabets)
通過(guò)輸出獲取的數(shù)字映射到上面提到的表格和相應(yīng)的字母作為加密字母.
Python中乘法密碼的基本調(diào)制函數(shù)如下:
def?unshift(key,?ch): ???offset?=?ord(ch)?-?ASC_A ???return?chr(((key[0]?*?(offset?+?key[1]))?%?WIDTH)?+?ASC_A)
注意 : 乘法密碼的優(yōu)點(diǎn)是它可以使用非常大的密鑰,如8,953,851.計(jì)算機(jī)需要相當(dāng)長(zhǎng)的時(shí)間才能通過(guò)大多數(shù)900萬(wàn)個(gè)密鑰進(jìn)行暴力破解.
以上就是Python密碼學(xué)XOR編碼流程及乘法密碼教程的詳細(xì)內(nèi)容,更多關(guān)于Python密碼學(xué)XOR乘法密碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
django項(xiàng)目中使用手機(jī)號(hào)登錄的實(shí)例代碼
這篇文章主要介紹了django項(xiàng)目中使用手機(jī)號(hào)登錄的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08Python獲取網(wǎng)頁(yè)數(shù)據(jù)詳解流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python來(lái)獲取網(wǎng)頁(yè)的數(shù)據(jù),主要應(yīng)用了Requests庫(kù),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-10-10Python并發(fā)編程隊(duì)列與多線程最快發(fā)送http請(qǐng)求方式
假如有一個(gè)文件,里面有10萬(wàn)個(gè)url,需要對(duì)每個(gè)url發(fā)送http請(qǐng)求,并打印請(qǐng)求結(jié)果的狀態(tài)碼,如何編寫(xiě)代碼盡可能快的完成這些任務(wù)呢2021-09-09Python 支付整合開(kāi)發(fā)包的實(shí)現(xiàn)
這篇文章主要介紹了Python 支付整合開(kāi)發(fā)包的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01在Python的Flask框架中使用日期和時(shí)間的教程
這篇文章主要介紹了在Python的Flask框架中使用日期和時(shí)間的教程,包括對(duì)各個(gè)時(shí)區(qū)之間轉(zhuǎn)換的一些處理,需要的朋友可以參考下2015-04-04解決Python httpx 運(yùn)行過(guò)程中無(wú)限阻塞的問(wèn)題
這篇文章主要介紹了解決Python httpx 運(yùn)行過(guò)程中無(wú)限阻塞的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Mysql分組查詢group by與with rollup方式
這篇文章主要介紹了Mysql分組查詢group by與with rollup方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Spectral?clustering譜聚類(lèi)算法的實(shí)現(xiàn)代碼
譜聚類(lèi)是從圖論中演化出來(lái)的算法,它的主要思想是把所有的數(shù)據(jù)看做空間中的點(diǎn),這些點(diǎn)之間可以用邊連接起來(lái),今天通過(guò)本文給大家介紹Spectral?clustering譜聚類(lèi)算法的實(shí)現(xiàn),感興趣的朋友一起看看吧2022-04-04python實(shí)現(xiàn)從web抓取文檔的方法
這篇文章主要介紹了python實(shí)現(xiàn)從web抓取文檔的方法,以抓取人人網(wǎng)頁(yè)面為例講述了完整的web文檔抓取方法,需要的朋友可以參考下2014-09-09在OpenCV里實(shí)現(xiàn)條碼區(qū)域識(shí)別的方法示例
這篇文章主要介紹了在OpenCV里實(shí)現(xiàn)條碼區(qū)域識(shí)別的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12