本博客主要介绍将RSA加密算法应用到单片机编码之中的一种方法。借助单片机矩阵键盘和显示屏模块进行输入和输出操作。因本方案已经应用到省创项目中,再次只重点介绍RSA算法的应用在驱动程序中的编码以及主函数编码。
1.rsa算法在单片机驱动中的函数
uchar Set_Key(uchar e)
{
uchar d;
// 公钥 n=221 p=13 q=17
uchar t=192;
//随机选择1到t之间的一个数且e与t互质 e=23
if(e<1||e>t)
{
return 0; //e取的不对,设置密码失败
}
d=1;
while((e*d)%t!=1) d++;//求模反元素d ,d为私钥 d=167
RSA_e=e;
RSA_d=d;
return 1;
}
uchar candp(uchar a,uchar b,uchar c)//加密解密
{
uint r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
return r;
}
void RSA_Encode(char *str)
{
uchar i=0;
for(i=0;i<17;i++)
{
rsa_pw[i]=0;
}
i=0;
while(*str)
{
rsa_pw[i++]=ENCODE(*str++);
}
}
void RSA_Decode(uchar *str)
{
uchar i=0;
for(i=0;i<17;i++)
{
rsa_decode[i]=' ';
}
rsa_decode[14]=0;
rsa_decode[15]=0;
rsa_decode[16]=0;
i=0;
while(*str)
{
rsa_decode[i++]=DECODE(*str++);
}
}
2.整体方案主函数代码
#include "mydriver.h"
uchar password[17]=""; //键盘输入的未加密密码
uchar rsa_pw