A computer-implemented method of performing a multi-party computation by a network of data processors, said data processors comprising first and second dealer nodes, a plurality of M computing nodes, and at least one result node, the method comprising: (a) providing the first dealer node with a random vector A having components ( A 0, A 1,..., A M -1) all of which are non-zero; (b) providing the second dealer node with an inverse vector A -1 having components A 0 − 1, A 1 − 1,..., A M − 1 − 1, such that for each i ∈ {0,..., M - 1}, the product A i ⋅ A i − 1 = 1; (c) the first dealer node computing a first transformed vector X = ( X 0, X 1,..., X M -1) of a first private input vector x = ( x 0, x 1,..., x M -1), according to a discrete linear transform for which Parseval's theorem holds; (d) the first dealer node computing a first blinded vector U as U = A ∘ X where the operator ∘ represents the Hadamard product; (e) the second dealer node computing a second transformed vector Y = ( Y 0, Y 1,..., Y M -1) of a second private input vector y = ( y 0, y 1,..., y M -1), according to said discrete linear transform; (f) the second dealer node computing a second blinded vector V as V = A -1 ∘ Y where the operator ∘ represents the Hadamard product; (g) the first dealer sending the i-th share U i of the first blinded vector U to the i-th computing node for each i ∈ {0,..., M - 1}; (h) the second dealer sending the i-th share V i of the second blinded vector V to the i-th computing node for each i E {0,..., M - 1}; (i) for each j ∈ {0,..., ( M - 1)}, the j-th computing node: - calculating from its received components U i and V j a result share R j = 1 M U j ⋅ V j, and - sending the result share R j to one or more of the one or more result nodes; (j) said one or more result nodes calculating, from the M received result shares R j for j ∈ {0,..., M - 1}, the inner product of the first and second private input vectors x, y as: < x, y > = ∑ j = 0 M − 1 R j (a) providing the first dealer node with a random vector A having components ( A 0, A 1,..., A M -1) all of which are non-zero; (b) providing the second dealer node with an inverse vector A -1 having components A 0 − 1, A 1 − 1,..., A M − 1 − 1, such that for each i ∈ {0,..., M - 1}, the product A i ⋅ A i − 1 = 1; (c) the first dealer node computing a first transformed vector X = ( X 0, X 1,..., X M -1) of a first private input vector x = ( x 0, x 1,..., x M -1), according to a discrete linear transform for which Parseval's theorem holds; (d) the first dealer node computing a first blinded vector U as U = A ∘ X where the operator ∘ represents the Hadamard product; (e) the second dealer node computing a second transformed vector Y = ( Y 0, Y 1,..., Y M -1) of a second private input vector y = ( y 0, y 1,..., y M -1), according to said discrete linear transform; (f) the second dealer node computing a second blinded vector V as V = A -1 ∘ Y where the operator ∘ represents the Hadamard product; (g) the first dealer sending the i-th share U i of the first blinded vector U to the i-th computing node for each i ∈ {0,..., M - 1}; (h) the second dealer sending the i-th share V i of the second blinded vector V to the i-th computing node for each i E {0,..., M - 1}; (i) for each j ∈ {0,..., ( M - 1)}, the j-th computing node: - calculating from its received components U i and V j a result share R j = 1 M U j ⋅ V j, and - sending the result share R j to one or more of the one or more result nodes; - calculating from its received components U i and V j a result share R j = 1 M U j ⋅ V j, and - sending the result share R j to one or more of the one or more result nodes; (j) said one or more result nodes calculating, from the M received result shares R j for j ∈ {0,..., M - 1}, the inner product of the first and second private input vectors x, y as: < x, y > = ∑ j = 0 M − 1 R j