Điểm:0

Không biết làm thế nào để tiếp cận vấn đề này, hoặc bắt đầu từ đâu. Tìm kẻ thù trong trò chơi ẩn nấp và ràng buộc

lá cờ sa

Tôi có vấn đề này: nhập mô tả hình ảnh ở đây

Tôi cũng có phiên bản python của vấn đề này ở đây:

nhập json
nhập sys, os, itertools

sys.path.append(os.path.abspath(os.path.join('..')))
từ playcrypt.tools nhập *
từ playcrypt.new_tools nhập *
từ playcrypt.primitives nhập *

từ playcrypt.games.game_bind nhập GameBIND
từ playcrypt.simulator.bind_sim nhập BINDSim

từ playcrypt.games.game_hide nhập GameHIDE
từ playcrypt.simulator.hide_sim nhập HIDESim

xác định THÊM(a,b):
    trả về a+b
def MULT(a,b):
    trả lại a*b
định nghĩa INT_DIV(a,N):
    trả về (a//N, a%N)
def MOD(a,N):
    trả lại một%N
def EXT_GCD(a,N):
    trả về egcd(a,N)
def MOD_INV(a,N):
    res = modinv(a,N)
    nếu res == Không có:
        nâng cao ValueError ("Nghịch đảo không tồn tại.")
    trả lại độ phân giải
def MOD_EXP(a,n,N):
    trả về exp(a,n,N)


"""
Cho p là số nguyên tố có độ dài bit k >= 8 sao cho (p - 1)/2 cũng là số nguyên tố. Đi thôi,
h là hai trình tạo khác nhau của nhóm G = Z_p^*. Đặt CS= (P, C, V) là
lược đồ cam kết có các thuật toán cấu thành như sau, trong đó thông báo
M nằm trong Z_{p-1}:
"""

chắc chắn P():
    pi = (g, h)
    trả lại số pi

định nghĩa C(pi, M):
    """
    :param pi: Tham số công khai
    :param M: Thông báo được chuyển giao, phần tử của Z_{p-1}
    :return: trả lại khóa cam kết và khóa mã hóa
    """
    (g, h) = pi
    K = ngẫu nhiên_Z_N(p-1)
    A = MOD_EXP(g, K, p)
    B = MOD_EXP(h, M, p)
    C_1 = MOD(A*B, p)
    C_2 = MOD(M+K, p-1)
    trả về ((C_1, C_2), K)

def V(pi, C, M, K):
    """
    :param pi: Tham số công khai
    :param C: Cam kết
    :param M: Tin nhắn cần xác minh
    :param K: Khóa dấu phẩy
    :return: trả về 1 nếu mở hợp lệ và 0 nếu ngược lại
    """
    (g, h) = pi
    (C_1, C_2) = C
    nếu không 0 <= K < p-1 hoặc không 0 <= M < p-1:
        trả về 0
    A = MOD_EXP(g, K, p)
    B = MOD_EXP(h, M, p)
    C_1_prime = MOD(A*B, p)
    C_2_prime = MOD(M+K, p-1)
    nếu (C_1 == C_1_prime) và (C_2 == C_2_prime):
        trả lại 1
    khác:
        trả về 0

"""
1. Chỉ định đối thủ có thời gian O(k^3) A1 thực hiện một truy vấn tới tiên tri LR của nó và
đạt được Adv^{hide}_CS(A1) = 1.
"""

định nghĩa A1(lr, pi):
    """
    Đây là đối thủ mà vấn đề là
    yêu cầu. Nó sẽ trả về 0 hoặc 1.

    :param lr: Oracle được cung cấp bởi game HIDE
    :param pi: Tham số công khai pi
    """
    vượt qua


"""
2. Chỉ định một đối thủ theo thời gian O(k) A2 sao cho Adv^{bind}_CS(A2) = 1.
(Gợi ý: Giá trị của g^{(p-1)/2} mod p là gì và tại sao?)
"""

định nghĩa A2(pi):
    """
    Đây là đối thủ mà vấn đề là
    yêu cầu. Nó sẽ trả về bộ dữ liệu (C, M_0, M_1, K_0, K_1).

    :param pi: Tham số công khai pi
    """
    trả về ((0, 0), 0, 0, 0, 0)


nếu __name__ == '__main__':

    # Tham số mẫu ngẫu nhiên
    k = 12
    print('Lấy mẫu tham số ngẫu nhiên độ dài bit k = %d' % k)
    p = ngẫu nhiên.randint(2**(k - 1), 2**k)
    trong khi không is_prime(p) hoặc không is_prime((p-1)//2):
        p = ngẫu nhiên.randint(2**(k - 1), 2**k)
    g = random_Z_N_star(p)
    trong khi (MOD_EXP(g, (p-1)//2, p) == 1) hoặc (MOD_EXP(g, 2, p) == 1):
        g = random_Z_N_star(p)
    h = ngẫu nhiên_Z_N_star(p)
    trong khi (h == g) hoặc (MOD_EXP(h, (p-1)//2, p) == 1) hoặc (MOD_EXP(h, 2, p) == 1):
        h = ngẫu nhiên_Z_N_star(p)
    print('p = %d, g = %d, h = %d' % (p, g, h))

    game_hide = GameHIDE(P, C)
    sim_hide = HIDESim(game_hide, A1)

    game_bind = GameBIND(P, V)
    sim_bind = BINDSim(game_bind, A2)

    print("Lợi thế của đối thủ A1 của bạn là xấp xỉ." + str(sim_hide.compute_advantage()))
    print("Lợi thế của đối thủ A2 của bạn là xấp xỉ." + str(sim_bind.compute_advantage()))

Hoàn toàn bị mất, làm thế nào để tôi bắt đầu?

Daniel S avatar
lá cờ ru
Hãy thử bắt đầu với một ví dụ số. Chẳng hạn, đặt $p=563$, $g=2$, $h=5$. Bây giờ cho phần đầu tiên, giả sử rằng chúng ta có các thông báo $M_0=123$ và $M_1=345$.Chúng tôi truy vấn nhà tiên tri **LR** và nhận được (335.306). Bạn có thể cho biết điều này tương ứng với $M_0$ hay $M_1$ không? Thế nào?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.