在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    57個(gè)挑戰(zhàn)之55服務(wù)加密實(shí)現(xiàn)

    57個(gè)挑戰(zhàn)之55服務(wù)加密實(shí)現(xiàn)

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

    下面藍(lán)框,如果要解除這個(gè)問(wèn)題,建議使用hashlib 模塊。

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

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

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

    把這段代碼引入到 昨天的代碼中,問(wèn)題解決。貼代碼

    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’ #設(shè)置一個(gè)key h = blake2b(digest_size=10,person=FILES_HASH_PERSON) #設(shè)置加密長(zhǎng)度及指定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ù)據(jù)插入數(shù)據(jù)庫(kù),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 , 整個(gè)信息內(nèi)容展示 print(type(textinfojson)) # 看看類型,原來(lái)是List print(textinfojson[0]) # 展示list 中第一個(gè)元素內(nèi)容 print(type(textinfojson[0])) # 看看類型是str print(json.loads(textinfojson[0])[“content”]) #把str 類型轉(zhuǎn)為字典,并讀取字典里面key 為”content”的內(nèi)容 textinfo = json.loads(textinfojson[0])[“content”] print(“—-come out of function—get_text(url)”) return textinfo”””1.保存文檔功能邏輯:接收前端請(qǐng)求,把文字存到數(shù)據(jù)庫(kù),并返回成功信息到后端。輸入: {“text”: “this is the info for test”}輸出: {“info”: “information has been successful saved”} 功能邏輯:1. 獲取輸入 2. 把輸入的text 文檔生成一個(gè)url3. 把URL 做hash ,并把hash(url)作為key4. 把{hash(url): text} 存入數(shù)據(jù)庫(kù)5. 如果存儲(chǔ)成功,則返回信息給到客戶端redis 表結(jié)構(gòu)設(shè)計(jì): {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.編輯文檔:功能邏輯: 收集客戶端的編輯請(qǐng)求,進(jìn)入url 并找到對(duì)應(yīng)的數(shù)據(jù),把text 數(shù)據(jù)展示在前端,輸入:{“edit”: “http://127.0.0.1/api/202206100906”}輸出:{“textinfo”:”this is the info for test”}供客戶端邏輯把這個(gè)text 數(shù)據(jù)做展示。2-1: 接收輸入的URL2-2: 把URL做hash,并到數(shù)據(jù)庫(kù)查找數(shù)據(jù)2-3: 如果存在則返回?cái)?shù)據(jù),如果不存在則返回信息告訴不存在 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)

    前端插入效果

    后臺(tái)信息:

    看到key 是這個(gè) 9265 結(jié)尾的。

    我用同一個(gè)url鏈接,反向找下對(duì)應(yīng)的數(shù)值:

    后端的日志:key 沒(méi)變

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

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

    相關(guān)推薦

    • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識(shí),其中也會(huì)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

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

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

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

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

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

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

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

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…

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

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

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

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

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

      手機(jī)瀏覽器可以用來(lái)瀏覽網(wǎng)頁(yè)、看新聞、看視頻,還能搜索問(wèn)題,在我們的工作生活中瀏覽器占據(jù)著非常重要的位置。手機(jī)瀏覽器除了這些作用,其實(shí)它隱藏著其他功能,比如:掃一掃。掃一掃可不只是用…

      2022年11月24日
    • 明查|美國(guó)新冠后遺癥患者中有16%癥狀嚴(yán)重以致無(wú)法工作?

      點(diǎn)擊進(jìn)入澎湃新聞全球事實(shí)核查平臺(tái) 速覽 – 網(wǎng)傳數(shù)據(jù)比例無(wú)權(quán)威信源佐證,該比例有可能是結(jié)合了美國(guó)疾病防控中心和布魯金斯學(xué)會(huì)的數(shù)據(jù)得出,但這兩個(gè)機(jī)構(gòu)的調(diào)研目的和樣本都不同…

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

      本文主要講的是三星手機(jī)截屏,以及和三星手機(jī)截屏圖片在哪個(gè)文件夾相關(guān)的知識(shí),如果覺(jué)得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 三星手機(jī)截屏怎么截 三星手機(jī)四種截屏方法 1、普通截…

      2022年11月24日

    聯(lián)系我們

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