아래 수식처럼 scalar multiplication을 하는 함수를 작성하는 가장 단순한 방법은 G를 k번 더하는 방법이다.
하지만 k를 2진수로 변환했을 때 1이 256bits만큼 있는 수라고 가정한다면 단순한 방법으로는 굉장히 오랜 시간 걸리는 문제가 존재한다.
이때 double and add 알고리즘을 사용하면 대략 512(256의 2배)번의 계산만으로 결괏값을 얻을 수 있다.
사실 이전에 포스팅한 fast exponentiation algorithm을 조금 변형하면 scalar multiplication을 효율적으로 할 수 있다.
다만 double and add algorithm이 더욱 공간적으로 효율성이 있다.
위 수식을 double and add 알고리즘을 통해 계산해보자.
Double and Add 알고리즘의 과정은 아래와 같다.
수식을 double and add 알고리즘을 통해 계산하는 과정은 아래와 같다.