Không có sự thay thế nào cho phép nhân mô-đun trong các hệ thống mật mã của câu hỏi. Một số ngôn ngữ như Python giúp dễ dàng cho mục đích giáo dục, chỉ có.
Trong RSA và DSA, và ở mức độ thấp hơn là tiền điện tử ECC trên secp256k1 hoặc secp256r1, người ta cần tính toán $b^e\bmod m$ Cho lớn $e$. Các thuật toán nhanh nhất (ví dụ: lũy thừa cửa sổ trượt) thực hiện về $\log_2 e$ bình phương mô-đun và như thế $\approx0.2\,\log_2 e$ phép nhân mô-đun. Tuy nhiên, có những thuật toán khác chỉ tốn kém hơn một chút (ví dụ: thang Montgomery) có thể tốt hơn từ quan điểm bảo mật đối với các kênh bên.
Mỗi phép nhân modulo hoặc bình phương modulo $m$, đối với phép cộng hoặc nhân điểm ở trên hoặc (trong ECC) với một đại lượng vô hướng, có chi phí tính toán tăng nhiều nhất giống như $(\log m)^2$ khi sử dụng các thuật toán đã học ở trường tiểu học thích ứng với các từ máy tính thay vì các chữ số. Điều đó có thể được hạ xuống $(\log m)^{\approx1,6}$ với Karatsuba hoặc $(\log m)^{\approx1,5}$ với Toom-3, nhưng trong ECC mô đun $m$ không đủ lớn để trả nhiều tiền ($m$ là 'chỉ' vài trăm bit trong ECC, thay vì vài nghìn trong RSA/DSA).
Khi phát triển chữ ký hoặc mã hóa bằng cách sử dụng secp256k1 hoặc secp256r1 từ đầu cho mục đích giáo dục, thường có các giai đoạn:
- Nhận một cái gì đó hoạt động, bằng cách xây dựng phép cộng và nhân đôi điểm trong tọa độ Descartes trên đỉnh của phép nhân mô-đun, sau đó là phép nhân điểm, sau đó là chữ ký hoặc/và mã hóa.
- Làm cho nó hoạt động nhanh hơn nhiều bằng cách sử dụng biểu diễn điểm tốt hơn, ví dụ: tọa độ xạ ảnh (cho phép trì hoãn phép nghịch đảo mô-đun tốn kém cho đến khi kết thúc phép nhân điểm)
- Làm cho nó hoạt động an toàn, điều này rất khó và thường đòi hỏi phải viết lại rất nhiều thứ từ đầu.
- Tối ưu hóa hiệu suất.Những điều này có thể được thử ở bất kỳ giai đoạn nào, nhưng hãy suy nghĩ về câu nói "tối ưu hóa sớm là gốc rễ của mọi tội lỗi".
Một số tài liệu tham khảo trực tuyến về phép nhân và lũy thừa mô-đun (không phải ECC):