示例#1
0
文件: main.py 项目: tripleday/PAGB
def verify_knowledge_exponent(u, w, z, Q, r, n):
    g = pow(65537, hash_to_length(concat(u, w)), n)
    l, nonce = hash_to_prime(concat(u, w, z))
    alpha = hash_to_length(concat(u, w, z, l))
    # print((pow(Q, l, n) * pow(u*pow(g,alpha,n), r, n)) % n)
    # print((w * pow(z, alpha, n)) % n )
    return (pow(Q, l, n) * pow(u*pow(g,alpha,n), r, n)) % n == (w * pow(z, alpha, n)) % n 
示例#2
0
文件: main.py 项目: tripleday/PAGB
def prove_knowledge_exponent(x, u, w, n):
    g = pow(65537, hash_to_length(concat(u, w)), n)
    z = pow(g, x, n)
    l, nonce = hash_to_prime(concat(u, w, z))  # Fiat-Shamir instead of interactive challenge
    alpha = hash_to_length(concat(u, w, z, l))
    q = x // l
    r = x % l
    Q = pow(u*pow(g,alpha,n), q, n)
    return z, Q, r
示例#3
0
文件: main.py 项目: tripleday/PAGB
def __verify_exponentiation_test(Q, u, x, w, n):
    # start_time = datetime.datetime.now() 
    l = hash_to_prime(x=(concat(x, u, w)))[0]               
    # end_time = datetime.datetime.now()
    # print((end_time - start_time))

    # start_time = datetime.datetime.now()
    r = x % l        
    # end_time = datetime.datetime.now()
    # print((end_time - start_time))
    # check (Q^l)(u^r) == w
    return pow(Q, l, n) * pow(u, r, n) % n == w
示例#4
0
文件: main.py 项目: tripleday/PAGB
def prove_exponentiation_test(u, x, w, n):
    l, nonce = hash_to_prime(concat(x, u, w))  # Fiat-Shamir instead of interactive challenge
    q = x // l
    Q = pow(u, q, n)
    return Q
示例#5
0
def __verify_exponentiation(Q, l_nonce, u, x, w, n):
    l = hash_to_prime(x=(concat(x, u, w)), nonce=l_nonce)[0]
    r = x % l
    # check (Q^l)(u^r) == w
    return (pow(Q, l, n) % n) * (pow(u, r, n) % n) % n == w