Большинство языков имеют функции или библиотеки, которые делают это, обычно называемые библиотекой Bignum ( GMP - хороший вариант).
Если вы хотите сделать это самостоятельно, я бы сделал это так же, как люди делают длинное умножение на бумаге. Для этого вы можете либо работать со строками, содержащими число, либо делать это в двоичном формате, используя побитовые операции.
Пример:
45
x67
---
315
+270
----
585
Или в двоичном виде:
101
x101
----
101
000
+101
------
11001
Редактировать: После того, как я сделал это в двоичном формате, я понял, что было бы намного проще (и, разумеется, быстрее) кодировать, используя побитовые операции вместо строк, содержащих числа с основанием 10. Я отредактировал мой пример двоичного умножения, чтобы показать шаблон: для каждого 1-бита в нижнем числе добавьте верхнее число, сдвинутое влево положение 1-битного раз в переменную. В конце эта переменная будет содержать продукт.
Для хранения продукта вам понадобятся два 64-разрядных числа, и представьте, что одно из них - первые 64-разрядные, а второе - вторые 64-разрядные. Вам нужно будет написать код, который переносит сложение из бита 63 второго числа в бит 0 первого числа.