I think I found a solution:
df %>%
mutate(n = df[1:(ncol(df)/2)] * df[(1+ncol(df)/2):(ncol(df))]) %>% head()
The result is valid for any number of variables. It only remains a problem with the name of the new variables. This is the result:
v1 v2 v3 v4 n.v1 n.v2
1 1 5 7 4 7 20
2 2 6 10 3 20 18