コード例 #1
0
def ntru_plain_hybrid_basis(A, g, q, nsamples):
    """
		Construct ntru basis for the MitM hybrid
	"""
    n = A.ncols
    ell = n - g

    B = IntegerMatrix(nsamples + ell, nsamples + ell)

    for i in range(ell):
        B[i, i] = 1
        for j in range(nsamples):
            B[i, j + ell] = A[i, j]
    for i in range(nsamples):
        B[i + ell, i + ell] = q

    # print('B:')
    # print(B)

    Al = B.submatrix(0, ell, ell, ell + nsamples)
    Ag = A.submatrix(ell, 0, nsamples, nsamples)

    B = LLL.reduction(B)

    return B, Al, Ag