Tôi phải tạo chữ ký RSA (trên máy trạng thái) trong C
trên bảng 32 bit. Tôi bị hạn chế về bộ nhớ vì vậy tôi không thể lưu trữ số thập phân trong một vector hoặc một cái gì đó như thế.Làm thế nào để lưu trữ số lượng lớn?
Điều tốt nhất là nếu tôi có thể lưu trữ bit và có quyền truy cập dễ dàng vào chúng; phương pháp lưu trữ nào là tốt nhất?
Tôi làm điều này một:
#if (CPU_TYPE == CPU_TYPE_32)
typedef uint32_t word;
#define word_length 32
typedef struct BigNumber {
word words[64];
} BigNumber;
#elif (CPU_TYPE == CPU_TYPE_16)
typedef uint16_t word;
#define word_length 16
typedef struct BigNumber {
word words[128];
} BigNumber;
#else
#error Unsupported CPU_TYPE
#endif
Điều này có vẻ khó sử dụng. Làm thế nào tôi có thể đơn giản hóa nó?
Nếu bạn không thể sử dụng các thư viện hiện có (GMP, MPFI, ...), bạn có thể muốn kiểm tra xem các thư viện đó đại diện cho các số nguyên dài như thế nào. Nó thường là một mảng của unsigneds phù hợp với nền tảng này. – dhke
Tôi không thể sử dụng bất kỳ thư viện nào, tôi nghĩ mình sẽ thử một cái gì đó với uint32, Cảm ơn bạn! –
* "Tôi không thể lưu trữ số thập phân trong một véc tơ hoặc một cái gì đó như thế" * - Tại sao? Giới hạn là gì? Bất kỳ kích thước cụ thể? –