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 <EOS>