【发布时间】:2016-08-24 12:49:03
【问题描述】:
我必须在 32 位板上的 C 中制作 RSA 签名(在状态机上)。我的内存有限,所以我无法将小数存储在向量或类似的东西中。
如果我可以存储位并且可以轻松访问它们,那将是最好的;哪种存储方式最好?
我做了这个:
#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
这似乎很难使用。如何简化?
【问题讨论】:
-
如果您不能使用现有的库(GMP、MPFI、...),您可能需要检查它们如何表示长整数。它通常是与平台对齐的无符号数组。
-
我不能使用任何库,我想我会用 uint32 尝试一下,谢谢!
-
“我不能将小数存储在向量或类似的东西中” - 为什么?有什么限制?有具体的尺寸吗?
-
我有一个 RH850 板(renesas.com/en-us/products/microcontrollers-microprocessors/…),这就是为什么内存是有限的,并且孔算法将在状态机上构建,这就是为什么我应该更加注意不丢失数据的原因.
-
我做了这个这个结构你有什么更好的想法吗? if (CPU_TYPE == CPU_TYPE_32) typedef uint32_t 字; #define word_length 32 typedef struct BigNumber { word words[64]; } 大数; #elif (CPU_TYPE == CPU_TYPE_16) typedef uint16_t word; #define word_length 16 typedef struct BigNumber { word words[128]; } 大数; #else #error 不支持的 CPU_TYPE #endif