第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 z3 其中約束取決于函數(shù)的輸出

使用 z3 其中約束取決于函數(shù)的輸出

蕪湖不蕪 2021-09-14 15:34:26
我想用 z3 來解決這個案例。輸入是一個 10 個字符的字符串。輸入的每個字符都是一個可打印字符 (ASCII)。輸入應(yīng)該是這樣的,當(dāng)使用輸入作為參數(shù)調(diào)用 calc2() 函數(shù)時,結(jié)果應(yīng)該是:0x0009E38E1FB7629B。在這種情況下如何使用 z3py?通常我只會添加獨立方程作為對 z3 的約束。在這種情況下,我不確定如何使用 z3。def calc2(input):    result = 0    for i in range(len(input)):        r1 = (result << 0x5) & 0xffffffffffffffff        r2 = result >> 0x1b        r3 = (r1 ^ r2)        result = (r3 ^ ord(input[i]))    return resultif __name__ == "__main__":        input = sys.argv[1]        result = calc2(input)        if result == 0x0009E38E1FB7629B:             print "solved"更新:我嘗試了以下操作,但是它沒有給我正確的答案:from z3 import *def calc2(input):    result = 0    for i in range(len(input)):        r1 = (result << 0x5) & 0xffffffffffffffff        r2 = result >> 0x1b        r3 = (r1 ^ r2)        result = r3 ^ Concat(BitVec(0, 56), input[i])    return resultif __name__ == "__main__":    s = Solver()    X = [BitVec('x' + str(i), 8) for i in range(10)]    s.add(calc2(X) == 0x0009E38E1FB7629B)    if s.check() == sat:        print(s.model())
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

您可以在 Z3 中對 calc2 進行編碼。您需要將循環(huán)展開 1,2,3,4,..,n 次(對于 n = 預(yù)期的最大輸入大?。瑑H此而已。(您實際上不需要展開循環(huán),您可以使用 z3py 創(chuàng)建約束)


查看完整回答
反對 回復(fù) 2021-09-14
  • 2 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號