亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                57個挑戰(zhàn)之55服務加密實現(xiàn)

                57個挑戰(zhàn)之55服務加密實現(xiàn)

                接昨天,發(fā)現(xiàn)在python3里面,2次提供相同的url,hash的數(shù)值的確是不一致的。google 了一下,發(fā)現(xiàn)這個是Python 為了防止惡意攻擊做的一個操作。

                下面藍框,如果要解除這個問題,建議使用hashlib 模塊。

                好吧,直接找了下它的實現(xiàn):

                https://docs.python.org/3/library/hashlib.html

                比較喜歡這個blake2b的實現(xiàn),指定長度,而且加入key 防止被暴力破解。

                把這段代碼引入到 昨天的代碼中,問題解決。貼代碼

                import redisimport reimport jsonimport timeimport cgifrom redis import StrictRedis, ConnectionPoolfrom flask import Flask,jsonify,requestimport requestsfrom hashlib import blake2bapp = Flask(__name__)def create_url(): print(“Come to the function create_url()”) prefix = “http://127.0.0.1/api/url/” suffix = time.strftime(“%Y-%m-%d-%H:%M:%S”, time.localtime()) url = prefix + suffix print(url) print(“Come out of the function create_url()”) return urldef dohash(url): print(“—-come to function— dohash(url)”) FILES_HASH_PERSON = b’57challenges’ #設置一個key h = blake2b(digest_size=10,person=FILES_HASH_PERSON) #設置加密長度及指定key h.update(url.encode()) primkey = h.hexdigest() print(“the hash of {0} is {1}”.format(url,primkey)) print(“—-come out of function— dohash(url)”) return primkeydef insert_into_redis(primkey,textcontent): #mock 把數(shù)據插入數(shù)據庫,primkey 和 textcontent print(“—-come to function— insert_into_redis(primkey,textcontent)”) pool = ConnectionPool(host=’localhost’, port=6379, db=0, decode_responses=True) r = StrictRedis(connection_pool=pool) try: r.hset(“document”, primkey, json.dumps({“content”: textcontent})) except: return 0 print(“—-come out of function— insert_into_redis(primkey,textcontent)”) return 1def check_url_if_exist(url): # mock檢查邏輯 print(“—-come to function—check_url_if_exist(url)”) print(“The received url is {0}”.format(url)) key = dohash(url) print(“to search this key {0},check if it exist”.format(key)) pool = ConnectionPool(host=’localhost’, port=6379, db=0, decode_responses=True) r = StrictRedis(connection_pool=pool) if r.hexists(“document”,key): result = 1 print(“it exist”) else: result = 0 print(“it not exist”) print(“—-come out of function—check_url_if_exist(url)”) return resultdef get_text(url): print(“—-come to function—get_text(url)”) pool = ConnectionPool(host=’localhost’, port=6379, db=0, decode_responses=True) r = StrictRedis(connection_pool=pool) key = dohash(url) textinfojson = r.hmget(“document”,key) print(textinfojson) #debug , 整個信息內容展示 print(type(textinfojson)) # 看看類型,原來是List print(textinfojson[0]) # 展示list 中第一個元素內容 print(type(textinfojson[0])) # 看看類型是str print(json.loads(textinfojson[0])[“content”]) #把str 類型轉為字典,并讀取字典里面key 為”content”的內容 textinfo = json.loads(textinfojson[0])[“content”] print(“—-come out of function—get_text(url)”) return textinfo”””1.保存文檔功能邏輯:接收前端請求,把文字存到數(shù)據庫,并返回成功信息到后端。輸入: {“text”: “this is the info for test”}輸出: {“info”: “information has been successful saved”} 功能邏輯:1. 獲取輸入 2. 把輸入的text 文檔生成一個url3. 把URL 做hash ,并把hash(url)作為key4. 把{hash(url): text} 存入數(shù)據庫5. 如果存儲成功,則返回信息給到客戶端redis 表結構設計: {md5(url): text} “””@app.route(‘/api/storedoc’,methods=[‘POST’])def store_doc(): textcontent = request.json[‘text’] # 獲取輸入 url = create_url() primkey = dohash(url) if insert_into_redis(primkey,textcontent) == 1: info =” insert into redis key {0} {1} pair success”.format(url,textcontent) else: info = “something error has happened” return jsonify({“info”:info})”””2.編輯文檔:功能邏輯: 收集客戶端的編輯請求,進入url 并找到對應的數(shù)據,把text 數(shù)據展示在前端,輸入:{“edit”: “http://127.0.0.1/api/202206100906”}輸出:{“textinfo”:”this is the info for test”}供客戶端邏輯把這個text 數(shù)據做展示。2-1: 接收輸入的URL2-2: 把URL做hash,并到數(shù)據庫查找數(shù)據2-3: 如果存在則返回數(shù)據,如果不存在則返回信息告訴不存在 result = 0″””@app.route(‘/api/editdoc’,methods=[‘POST’])def edit_doc(): url = request.json[‘edit’] print(“We have got the input url, it’s {0}”.format(url)) if check_url_if_exist(url) == 1: textinfo = get_text(url) print(” info: the text info is {0}”.format(textinfo)) return jsonify({“info”: “the url is exist”,”url”:url}) else: return jsonify({“info”: “the url {0} is not exist”.format(url)})if __name__ == ‘__main__’: app.run(host=’0.0.0.0′,port=8008,debug = True)

                前端插入效果

                后臺信息:

                看到key 是這個 9265 結尾的。

                我用同一個url鏈接,反向找下對應的數(shù)值:

                后端的日志:key 沒變

                操作三次,查看數(shù)據庫,信息是完備的。

                鄭重聲明:本文內容及圖片均整理自互聯(lián)網,不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月14日 21:07
                下一篇 2022年6月14日 21:07

                相關推薦

                • 計算機網絡技術論文(計算機網絡技術論文七千字)

                  今天小編給各位分享計算機網絡技術論文的知識,其中也會對計算機網絡技術論文七千字進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關注本站,現(xiàn)在開始吧! 計算機網絡方面的論文3000字…

                  2022年11月26日
                • 全民K歌升級新版本7.0之后,有哪些隱藏功能?

                  作者:高百烈來源:知乎 這個功能,舊版并沒有,要升級到全新的全民K歌7.0版本才能發(fā)現(xiàn)。 作為朋友圈當代K歌之王,我費了不少功夫才搶到內測版本。有一說一,全民K歌的路子真的很野,新…

                  2022年11月25日
                • 寶可夢朱紫四大天王屬性怎么樣 四大天王屬性數(shù)值介紹

                  寶可夢朱紫四大天王屬性如何?四大天王的屬性數(shù)值玩家們還是挺好奇的,想要了解四大天王屬性的可以看看下面小編的介紹,小編會把四大天王的屬性數(shù)值全都分享在下面,各位趕緊來小編這里多了解一…

                  2022年11月25日
                • 上手Reno8 Pro體驗跨屏互聯(lián) 實在太方便!

                  11月已經來到了月底,在手機品牌又要推出新一年度的新品手機之前,我們來點評一下今年令人驚喜的產品。如OPPO的Reno8 Pro系列,該系列搭載雙芯影像配置獲得了很多消費者的認可?!?/p>

                  2022年11月25日
                • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

                  CPA渠道 CPA指的是按照指定的行為結算,可以是搜索,可以是注冊,可以是激活,可以是搜索下載激活,可以是綁卡,實名認證,可以是付費,可以是瀏覽等等。甲乙雙方可以根據自己的情況來定…

                  2022年11月25日
                • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點)

                  如今抖音這個短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺上開通直播,更具有超強的帶貨屬性,已經有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個人都能做好的,那么在…

                  2022年11月24日
                • 前三季度,市場規(guī)模超過五萬億元 信息消費展現(xiàn)蓬勃生機

                  家居企業(yè)個性化全屋定制系統(tǒng),備受消費者青睞;主打專業(yè)電競的新款高性能便攜式計算機,銷量表現(xiàn)創(chuàng)新高;物流企業(yè)推出數(shù)智化供應鏈興農服務項目,助力優(yōu)質農產品出深山…… 不久前,工信部發(fā)布…

                  2022年11月24日
                • 華為手機怎么掃一掃連接wifi(手機掃一掃在哪里)

                  手機瀏覽器可以用來瀏覽網頁、看新聞、看視頻,還能搜索問題,在我們的工作生活中瀏覽器占據著非常重要的位置。手機瀏覽器除了這些作用,其實它隱藏著其他功能,比如:掃一掃。掃一掃可不只是用…

                  2022年11月24日
                • 明查|美國新冠后遺癥患者中有16%癥狀嚴重以致無法工作?

                  點擊進入澎湃新聞全球事實核查平臺 速覽 – 網傳數(shù)據比例無權威信源佐證,該比例有可能是結合了美國疾病防控中心和布魯金斯學會的數(shù)據得出,但這兩個機構的調研目的和樣本都不同…

                  2022年11月24日
                • 三星手機截屏(三星手機截屏圖片在哪個文件夾)

                  本文主要講的是三星手機截屏,以及和三星手機截屏圖片在哪個文件夾相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 三星手機截屏怎么截 三星手機四種截屏方法 1、普通截…

                  2022年11月24日

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時間:周一至周五,10:30-18:30,節(jié)假日休息