A980芯片的RSA秘钥生成

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密钥仍让我难以解析,我将检查的重心放在了密钥的生成函数中。
     开发板中对密钥的生成函数的解释如下图:

    我之前更改了私钥的类型,即RSA_noCRT,但是我从未改过公钥的密钥类型,RSA_E_RAND。
    在更改公钥生成函数的类型之后,串口调试程序终于输出了我想要的结果。
    以私钥为例,开发板我以hex输出了整个的数据,其中红色为flag,绿色为私钥长度,浅蓝色为RSA的模N的长度,后面分别是私钥,N的实际内容。


           经过以上的研究,我们可以看出一味地使用例子的程序是不合适的,必须通过自己的尝试来优化。

    
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值