背景
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比陽谷網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式陽谷網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋陽谷地區(qū)。費用合理售后完善,十載實體公司更值得信賴。在實際項目實施中,會編寫很多在服務器執(zhí)行的作業(yè)腳本。程序中凡是涉及到數(shù)據(jù)庫鏈接、操作系統(tǒng)用戶鏈接、IP地址、主機名稱的內(nèi)容都是敏感信息。在純內(nèi)網(wǎng)系統(tǒng)中往因為開發(fā)時間緊迫,往往都直接將這些敏感信息明文方式寫在腳本中了。
稍微規(guī)范一點的,創(chuàng)建一個通用的config文件,將所有這類敏感信息記錄在這個文件中,腳本以讀取文件方式獲取這些信息。這種方式的好處是腳本不用在應用遷移、災備部署的時候再起不同的版本,尤其是大數(shù)據(jù)平臺作業(yè)運行的腳本,如果是需要做災備集群,這種方式可以減少生產(chǎn)變更時的人工干預操作。但是這種方式仍不能解決安全性的問題,只要config文件泄露,那么平臺會非常危險。
因此在這個config文件的基礎上,對其進行改造,實現(xiàn)對內(nèi)容的加密,而腳本使用時再對其進行解密。因此要求有一個程序能對文本內(nèi)容進行加密,也能進行反向解密。
不可逆的加密方法使用最多的就是md5加密算法,我們一般用來檢驗文件的完整和安全性,不適用這個場景。
使用python語言對文本內(nèi)容進行加解密有多種方式,從網(wǎng)上搜索結果看主要有以下幾種:
1.方法一 使用base64轉編碼
Base64是一種用64個字符來表示任意二進制數(shù)據(jù)的方法。
用記事本打開exe、jpg、pdf這些文件時,我們都會看到一大堆亂碼,因為二進制文件包含很多無法顯示和打印的字符,所以,如果要讓記事本這樣的文本處理軟件能處理二進制數(shù)據(jù),就需要一個二進制到字符串的轉換方法。Base64是一種最常見的二進制編碼方法。
Base64的原理很簡單,首先,準備一個包含64個字符的數(shù)組:
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/
']
然后,對二進制數(shù)據(jù)進行處理,每3個字節(jié)一組,一共是3x8=24bit,劃為4組,每組正好6個bit,得到4個數(shù)字作為索引,然后查表,獲得相應的4個字符,就是編碼后的字符串。
所以,Base64編碼會把3字節(jié)的二進制數(shù)據(jù)編碼為4字節(jié)的文本數(shù)據(jù),長度增加33%,好處是編碼后的文本數(shù)據(jù)可以在郵件正文、網(wǎng)頁等直接顯示。
如果要編碼的二進制數(shù)據(jù)不是3的倍數(shù),最后會剩下1個或2個字節(jié)怎么辦?
Base64用\x00字節(jié)在末尾補足后,再在編碼的末尾加上1個或2個=號,表示補了多少字節(jié),解碼的時候,會自動去掉。
Python內(nèi)置的base64可以直接進行base64的編解碼:
import base64 userPassword="sunlinemdp201810" unkownPassword=base64.b64encode(bytes(userPassword,'utf-8')) print("加密后:"+str(unkownPassword,'utf-8')) kownPassword=str(base64.b64decode(unkownPassword),'utf-8') print('解密后:'+kownPassword)
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。