成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

基于python實現數組格式參數加密計算

瀏覽:110日期:2022-07-29 13:04:10

代碼示例

#輸入’’’order_id:31489join_course[0][join_tel]:13130999882join_course[0][join_name]:任學雨join_course[0][join_card_afterfour]:043Xjoin_course[0][join_school]:銘博教育咨詢join_course[1][join_tel]:13130999883join_course[1][join_name]:任學雨join_course[1][join_card_afterfour]:043Xjoin_course[1][join_school]:銘博教育咨詢join_course[2][join_tel]:13130999884join_course[2][join_name]:任學雨join_course[2][join_card_afterfour]:043Xjoin_course[2][join_school]:銘博教育咨詢join_course[3][join_tel]:13130999885join_course[3][join_name]:任學雨join_course[3][join_card_afterfour]:043Xjoin_course[3][join_school]:銘博教育咨詢timestamp:1574921552698sign:8936b324e417b31d97f0c3e9a904dssss3’’’#輸出join_course[{'join_tel':'13130999882','join_name':'任學雨','join_card_afterfour':'043X','join_school':'銘博教育咨詢'},{'join_tel':'13130999883','join_name':'任學雨','join_card_afterfour':'043X','join_school':'銘博教育咨詢'},{'join_tel':'13130999884','join_name':'任學雨','join_card_afterfour':'043X','join_school':'銘博教育咨詢'},{'join_tel':'13130999885','join_name':'任學雨','join_card_afterfour':'043X','join_school':'銘博教育咨詢'}]order_id31489timestamp1575001757726994(str_encrypt)固定加密字符串

大概思路:

1.將輸入字符串切割為list

2.提取數組指定參數

3.提取除sign之外的非數組指定參數并排序(asicc碼排序)

4.處理數組參數拼接問題(先處理數組內參數,將key與value轉換為字典,再將字典添加至list,最后拼接字符串’join_course‘,拼接非數組參數與加密字符串)

5.計算加密字符串sign并提取輸入的字符串

6.拼接最終的字符串,并處理請求數據格式

def fwh_sign_sha1_Array(self,str_in):#服務請求簽名處理封裝(請求格式為數組時的封裝) search_time_str=’timestamp:’ search_sign_str=’sign:’ str_inSource=re.search(’(%s.+)’%(search_time_str),str_in)#匹配字段時間戳(timestamp) if str_inSource is not None: time_str=self.get_timestamp()#最終需要的時間戳,13位 str_inSource=str_inSource.group() search_str_inSource=re.search(’s’,str_inSource) #匹配時間戳,key與value是否包含空格 #如果包含空格,替換時加上空格,如果不處理會有問題(字符串格式與其他地方不一致) if search_str_inSource is not None:str_equalSource=re.sub(str_inSource,’%s%s%s’%(search_time_str,search_str_inSource.group(),time_str),str_in)#將輸入的時間戳替換為需要的時間戳,并加上匹配出來得空格 else:str_equalSource=re.sub(str_inSource,’%s%s’%(search_time_str,time_str),str_in)#將輸入的時間戳替換為需要的時間戳 input_list_source=str_equalSource.split(’n’)#以換行符分隔字符串并轉換位列表 input_list=[a for a in input_list_source if (search_sign_str or ’%ss’%(search_sign_str) ) not in a]#列表過濾字段sign out_str=’n’.join(input_list)#將排序后的list拼接為字符串 out_list_join_course=[a for a in input_list if (’[’ and ’]’) in a ]#去除數組外的其他參數 input_list_other=sorted([a for a in input_list if (’[’ or ’]’) not in a ])#獲取數組外的其他參數并排序 input_list_other_str=’n’.join(input_list_other)#將排序后的list拼接為字符串 input_out_list_other_str=self.requestDataToStr_firefoxAndChrome(input_list_other_str,’’,’’).decode()#獲取拼接完成后的請求參數字符串(sign) join_course_list=[]#數組 join_course_dict={}#數組中的dict for index,i in enumerate(out_list_join_course):join_course_index=i.find(’[’)join_course=i[:join_course_index]#匹配join_courseArray_index=i[join_course_index:].find(’]’)#匹配[index]的下標Array=i[join_course_index:][:Array_index+1]#取出[index]Array_key_data=i[join_course_index:][Array_index+1:]#取出[0]后面的值search_colon=Array_key_data.find(’:’)#匹配出冒號的indexArray_key=Array_key_data[1:search_colon-1]#匹配key(冒號前面的值)并去除[]Array_value=Array_key_data[search_colon+1:]#匹配value(冒號后面的值)join_course_dict[Array_key]=Array_value#將匹配出來的key與value添加至dictif index+1<len(out_list_join_course): #判斷上一個元素的部分內容(索引前的內容)是否包含于list下一個元素的內容 #(如果不包含那么說明當前元素就是本組數據的最后一個,此時將dict添加至對應的list) #并清空字典(不清除會導致最終插入的值是重復的,因為key是一樣的) if join_course+Array not in(out_list_join_course[index+1]): join_course_list.append(join_course_dict) join_course_dict={}else:#如果當前元素是list中的最后一個元素那么直接添加將dict至對應的list join_course_list.append(join_course_dict) join_course_dict={} #將list里面的數組轉換為json格式,這里只能對list進行使用,不用對數組中的dict使用 #ensure_ascii:防止中文被轉義,separators:去除字符串中多余的空格 join_course_list=json.dumps(join_course_list,ensure_ascii=False,separators=(’,’, ’:’)) #拼接加密前的請求字符串,用換行符區分數組參數與非數組參數(目的是方便轉換為list) join_course_str=join_course+str(join_course_list)+’n’+input_out_list_other_str join_course_str_list=sorted(join_course_str.split(’n’))#對list進行排序處理 join_course_last_str=’’.join(join_course_str_list)#對排序后的list拼接為字符串 out_sign_str=self.sha1_Encry(join_course_last_str)#得到加密后的加密字符串 str_inSource_sign=re.search(’(%s.+)’%(search_sign_str),str_in)#匹配字段簽名驗證(sign) if str_inSource_sign is not None:str_inSource_sign=str_inSource_sign.group()search_inSource_sign=re.search(’s’,str_inSource)#匹配sign,key與value是否包含空格#如果包含空格,替換時加上空格,如果不處理會有問題(字符串格式與其他地方不一致)if search_inSource_sign is not None: str_last_sign=re.sub(str_inSource_sign,’%s%s%s’%(search_sign_str,search_inSource_sign.group(), out_sign_str),str_equalSource)#將輸入的時間戳替換為需要的時間戳else: str_last_sign=re.sub(str_inSource_sign,’%s%s’%(search_sign_str,out_sign_str), str_equalSource)#將輸入的時間戳替換為需要的時間戳# print(str_last_sign)str_give=self.requestDataToStr_firefoxAndChrome(str_last_sign)return str_give else:print(’輸入字符串沒有sign對象:sign,無法完成數據轉換’)return None else: print(’輸入字符串沒有時間戳對象:timestamp,無法完成數據轉換’) return None

期間遇到的問題:

1.dict的單引號在使用json解析時會出問題,需要轉換為雙引號('),使用json.dumps可處理為這樣的格式

2.json.dumps方法的問題:1.中文會自動轉義,需指定參數ensure_ascii=false,默認時true;2.轉換是會自動產生空格,然而開發加密時沒有空格,需要去掉,需指定參數separators=(’,’, ’:’)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲欧美日韩人成在线播放| 精彩视频一区二区| 国产精品污污网站在线观看| 日韩丝袜情趣美女图片| 日韩一级片网站| 日韩天堂在线观看| 2021中文字幕一区亚洲| 久久精品亚洲国产奇米99| 久久久不卡影院| 国产精品美女久久久久久久| 国产精品福利av| 亚洲乱码国产乱码精品精可以看| 亚洲女同一区二区| 五月天精品一区二区三区| 蜜桃久久久久久久| 国产成人精品亚洲午夜麻豆| 99精品视频中文字幕| 欧美日韩国产三区| 在线亚洲伦理| 91福利在线播放| 在线不卡欧美精品一区二区三区| 精品欧美乱码久久久久久1区2区| 国产日产欧美一区二区三区| 国产精品国产自产拍高清av王其| 一区二区三区电影在线播| 免费精品视频最新在线| 国产成人免费视频一区| 国产精品v欧美精品v日韩| 国产欧美日韩伦理| 欧美人妇做爰xxxⅹ性高电影| 精品国产伦一区二区三区免费| 国产精品进线69影院| 日韩国产一区二| 高清视频一区二区| 一本色道久久综合亚洲二区三区| 在线视频国内自拍亚洲视频| 久久久国产精华| 午夜视频一区在线观看| 国产不卡视频一区| 激情亚洲网站| 国产尤物一区二区| 国内精品久久久久久久97牛牛| 蜜乳av另类精品一区二区| 欧美一级生活片| 午夜一区二区三视频在线观看| 欧美日韩一区不卡| 国产日韩精品久久久| 人人超碰91尤物精品国产| 91在线视频播放| 久久一日本道色综合久久| 久久蜜臀精品av| 日本系列欧美系列| 国内自拍一区| 91精品欧美福利在线观看| 中文字幕日韩欧美一区二区三区| 蜜臀久久久久久久| 在线欧美三区| 欧美tickling挠脚心丨vk| 亚洲制服丝袜av| 91麻豆免费观看| 欧美乱妇15p| 亚洲一区在线播放| 91美女视频网站| 综合久久久久久久| 久久99精品久久久久婷婷| 亚洲精品日韩久久| 国产色一区二区| 九色综合狠狠综合久久| 国产精品综合| 国产精品色一区二区三区| 国产黄色成人av| 巨乳诱惑日韩免费av| 日韩理论电影院| 91啪在线观看| 每日更新成人在线视频| 国产精品国产三级国产| kk眼镜猥琐国模调教系列一区二区| 色系网站成人免费| 亚洲图片欧美色图| 欧美久久久久| 久久婷婷综合激情| 成人免费视频视频在线观看免费| 欧美最猛性xxxxx直播| 亚洲国产精品久久不卡毛片| 亚洲精品一区二区三区樱花| 国产精品蜜臀av| 欧美精品观看| 国产亚洲欧美色| 99国产精品久久久久久久久久久 | 久久国产88| 亚洲人成7777| 一区二区欧美日韩| 亚洲欧美国产毛片在线| 亚洲欧洲日夜超级视频| 国产精品沙发午睡系列990531| 91美女视频网站| 国产亚洲精品超碰| 午夜久久久久| 中文字幕欧美日韩一区| 国产精品二区在线| 综合久久久久久| 国产亚洲一区在线播放| 亚洲一区在线观看视频| 99成人精品| 亚洲一区在线电影| 久久中文字幕一区二区三区| 日本伊人色综合网| 欧美三区在线观看| 国产自产高清不卡| 精品国产伦一区二区三区免费| 99视频精品免费视频| 欧美经典三级视频一区二区三区| 91小宝寻花一区二区三区| 国产日产欧美一区二区三区| 极品中文字幕一区| 亚洲宅男天堂在线观看无病毒 | 亚洲天堂精品在线观看| 在线精品亚洲一区二区| 亚洲成人精品一区二区| 欧美性色综合网| 成人a免费在线看| 中文字幕一区视频| 午夜在线视频观看日韩17c| 美女一区二区在线观看| 欧美一区二区三区四区久久| 成a人片亚洲日本久久| 国产精品福利av| 在线观看日韩毛片| 成人黄色在线视频| 色先锋资源久久综合| 欧美刺激午夜性久久久久久久 | 亚洲九九精品| 日日夜夜精品视频免费| 欧美国产一区视频在线观看| 在线视频一区二区免费| 91污在线观看| 免费久久99精品国产| 精品国产乱码久久久久久蜜臀| 9色国产精品| 日韩亚洲国产中文字幕欧美| 国产一区二区三区久久久| 日韩免费看网站| 国产三区精品| 国产精品一区在线| 一区二区三区日韩| 91精品国产综合久久精品图片| 国产综合视频| 精品美女被调教视频大全网站| 一区二区久久| 高清国产一区二区| 亚洲成av人片在线| 国产日韩精品一区二区三区| 一本一道波多野结衣一区二区| 99久久夜色精品国产网站| 午夜精品久久久久久| 久久综合久色欧美综合狠狠| 久久亚洲风情| 欧美日本韩国一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲久本草在线中文字幕| 宅男噜噜噜66一区二区66| 国产精品入口66mio| 亚洲美女视频在线| 精品日韩欧美一区二区| 久久综合中文| 亚洲午夜在线观看| 成人黄页毛片网站| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲免费在线视频一区 二区| 精品国产精品一区二区夜夜嗨| 久久另类ts人妖一区二区| 在线高清一区| 欧美a级一区| 国产成人精品影院| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲少妇中出一区| 在线成人www免费观看视频| 成人深夜视频在线观看| 美女任你摸久久| 亚洲成人1区2区| 亚洲人妖av一区二区| 欧美韩国日本综合| 欧美精品一区二区三区四区 | 午夜一区二区三区不卡视频| 欧美亚韩一区| 欧美日韩高清免费| av一二三不卡影片| 成人做爰69片免费看网站| 精品国产精品网麻豆系列| 91精品欧美综合在线观看最新| 色婷婷综合久久久久中文 | 色噜噜狠狠成人网p站| 国产精品久久久久久久免费软件| 国产精品国码视频| 欧美日韩亚洲在线| 欧美日韩另类丝袜其他| 欧美午夜视频| 国产主播一区| 亚洲一二三区精品| 蜜臀av一区二区在线免费观看|