Think how you do it in decimal:
e.g., 23 x 7 = [(2 x 10) x 7] + [3 x 7]
Multiplying by 10 in decimal is equivalent to multiplying by 2 in binary - which is just a shift.
And in binary, multiplication is easily done with adders. So, in the binary case, the above can be achieved with just adders and shifters.
Search for "binary multiplier gate implementation"