A method, performed by a multiparty computation system, for implementing a secure multiparty inner product computation protocol wherein a first computational party holds a first private vector (x = { x 1,...,x N}) and a second computational party holds a second private vector ( w = { w 1,..., w N}), the first private vector and the second private vector each having a number N of values, wherein the first computational party and the second computational party want to jointly compute an inner product ( d) of the first private vector and the second private vector such that x 1 w 1 + ⋯ + x N w N = ∑ i = 1 N x i w i, without the first computational party learning the second private vector and the second computational party learning the first private vector, the method comprising: using an SPDZ protocol to securely share the first private vector from the first computational party to the second computational party; computing, for i = 1,..., k, a vector x l = { x 1,..., x k} for the first computational party, where k = N /2 and the value x l = x 2 i -1 x 2 i, and using the SPDZ protocol to securely share the vector x l with the second computational party; using the SPDZ protocol to securely share the second private vector from the first computational party to the second computational party; computing, for i = 1,..., k, a vector w l = { w 1,..., w k} for the second computational party, where the value w l = w 2 i- 1 w 2 i, and using the SPDZ protocol to securely share the vector w l with the first computational party; computing, for i = 1,..., k, shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i- 1] by performing SPDZ protocol Add([ w 2 i],[ x 2 i -1]) and Add([ w 2 i],[ x 2 i -1]), respectively, with the first computational party and the second computational party, the shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i- 1] being shares of ( w 2 i -1 + x 2 i) and ( w 2 i + x 2 i- 1), respectively, wherein the first computational party and the second computational party each hold the shares [ w 2 i -1 + x 2 i] and [ w 2 i + x 2 i -1], wherein having access to the shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i -1] does not reveal the actual value of w 2 i -1 + x 2 i and w 2 i + x 2 i- 1, respectively; computing, for i = 1,..., k, inner product shares [ d i] by performing SPDZ protocol Mult([ w 2 i -1 + x 2 i], [ w 2 i + x 2 i -1]) with the first computational party and the second computational party; and computing the inner product ( d) by performing SPDZ protocol Add([ d 1],...,[ d k], -[ x 1],...,-[ x k],-[ w 1],...,-[ w k]) with the first computational party and the second computational party. using an SPDZ protocol to securely share the first private vector from the first computational party to the second computational party; computing, for i = 1,..., k, a vector x l = { x 1,..., x k} for the first computational party, where k = N /2 and the value x l = x 2 i -1 x 2 i, and using the SPDZ protocol to securely share the vector x l with the second computational party; using the SPDZ protocol to securely share the second private vector from the first computational party to the second computational party; computing, for i = 1,..., k, a vector w l = { w 1,..., w k} for the second computational party, where the value w l = w 2 i- 1 w 2 i, and using the SPDZ protocol to securely share the vector w l with the first computational party; computing, for i = 1,..., k, shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i- 1] by performing SPDZ protocol Add([ w 2 i],[ x 2 i -1]) and Add([ w 2 i],[ x 2 i -1]), respectively, with the first computational party and the second computational party, the shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i- 1] being shares of ( w 2 i -1 + x 2 i) and ( w 2 i + x 2 i- 1), respectively, wherein the first computational party and the second computational party each hold the shares [ w 2 i -1 + x 2 i] and [ w 2 i + x 2 i -1], wherein having access to the shares [ w 2 i- 1 + x 2 i] and [ w 2 i + x 2 i -1] does not reveal the actual value of w 2 i -1 + x 2 i and w 2 i + x 2 i- 1, respectively; computing, for i = 1,..., k, inner product shares [ d i] by performing SPDZ protocol Mult([ w 2 i -1 + x 2 i], [ w 2 i + x 2 i -1]) with the first computational party and the second computational party; and computing the inner product ( d) by performing SPDZ protocol Add([ d 1],...,[ d k], -[ x 1],...,-[ x k],-[ w 1],...,-[ w k]) with the first computational party and the second computational party.