A980芯片的RSA秘钥生成
在这一个月里,终于完成心中的几件大事,现在终于有时间做毕业设计了。
目前,我采用同的是A980芯片来生成RSA秘钥。最开始,我采用了资料里的RSAdemo里的程序进行烧录,结果读出的程序中,密钥对的N不相等,导致我对密钥的js解析产生里较大的麻烦。我在查看开发板的开发文档后,抛弃了资料原有的私钥的数据结构类型(RSA_PriKey_CRT_2048),选择了结构上更简洁易懂的结构。
最终,我选取的公钥的数据结构如下:
struct RSA_PubKey_2048
{
DWORD flag;
DWORD elen;
DWORD nlen;
DWORD e;
BYTE n[256];
};
私钥的数据结构如下:
struct RSA_PriKey_2048
{
DWORD flag;
DWORD nlen;
DWORD dlen;
BYTE d[256];
BYTE n[256];
};
其中,dlen、nlen、elen为密钥的长度。
之后产生的rsa密钥仍让我难以解析,我将检查的重心放在了密钥的生成函数中。
开发板中对密钥的生成函数的解释如下图:
在更改公钥生成函数的类型之后,串口调试程序终于输出了我想要的结果。
以私钥为例,开发板我以hex输出了整个的数据,其中红色为flag,绿色为私钥长度,浅蓝色为RSA的模N的长度,后面分别是私钥,N的实际内容。
经过以上的研究,我们可以看出一味地使用例子的程序是不合适的,必须通过自己的尝试来优化。