亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ecc_encrypt.c

?? 基于msp430的橢圓曲線加密器程序
?? C
?? 第 1 頁 / 共 2 頁
字號:

//***************程序說明****************************************//
//程序名稱:    射頻數(shù)據(jù)通信 AUCT-Scanner.C                      //
//功能:        無線掃碼器                                       //
//硬件環(huán)境:    MSP430F135; NRF2401                              //
//軟件開發(fā)環(huán)境:IAR Embedded Workbench for MSP430 V3             //
//制作單位:    艾易(武漢)電子技術有限公司                       //
//作者:                                                         //
//日期:        2007.1.1                                        //
//***************************************************************//

#include  <msp430x13x.h>
#include  "ECC_Encrypt.h"
#include  <string.h>
//--------------------------------------可調(diào)用函數(shù)(子程序)---------------------------//

//**************************************************************
//函數(shù)名稱: void Software_delay(unsigned int i)
//函數(shù)說明: 軟件延時程序
//參數(shù)說明: 延時時間單位:1/4微秒,16位長
//返回值  : 無  
//**************************************************************
#include <stdio.h>
#include "stdio.h"
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h> 
#include <stdlib.h>

unsigned char p=29;
unsigned char a=4;
unsigned char b=20;
//--------------------------------------可調(diào)用函數(shù)(子程序)---------------------------//

//**************************************************************
//函數(shù)名稱: void Software_delay(unsigned int i)
//函數(shù)說明: 軟件延時程序
//參數(shù)說明: 延時時間單位:1/4微秒,16位長
//返回值  : 無  
//**************************************************************
void Software_delay(unsigned int i)
{
    while(i--)
    {;}
}
//**************************************************************
//函數(shù)名稱: void Software_delay(unsigned int i)
//函數(shù)說明: 軟件延時程序
//參數(shù)說明: 延時時間單位:1/4微秒,16位長
//返回值  : 無  
//**************************************************************
void delayms(unsigned int i)
{int j;
    while(i--)
    {
      for(j=1;j<=500;j++)
      {;}
    }

}
//**************************************************************
//函數(shù)名稱: void send_uart_a_byte(unsigned char sendbyte)
//函數(shù)說明: 異步串口發(fā)送一字節(jié)數(shù)據(jù)
//參數(shù)說明: 要發(fā)送的數(shù)據(jù),
//返回值  : 無  
//調(diào)用函數(shù): 
//引腳說明: TXD_PIN---串口發(fā)送引腳
//**************************************************************
void send_uart_a_byte(unsigned char sendbyte)
{
    while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready? 異步串口發(fā)送緩存是否準備好。
    TXBUF0 = sendbyte;         //將輸入的要發(fā)送的數(shù)據(jù)存放到緩存,          
}

//******************************************************************
//函數(shù)名稱: void uart_command_prog(void)
//函數(shù)說明: 串口命令處理
//返回值:   error
//調(diào)用函數(shù): void send_spi_configure(unsigned char ByteCount); void send_spi_string(void); 
//全局變量: g_UartCommand;g_recv_count; g_SpiDataCount; g_SpiAddrCount;g_buf[32]; g_configer[15];
//函數(shù)功能說明:串口命令字為g_UartCommand,其命令共有三個:01,02,03。
//              當為01時表示重新配置射頻頭;為02時表示發(fā)射一幀數(shù)據(jù);為03時表示待機.
//******************************************************************
void uart_command_prog(void)
{
    unsigned char i,j;
    unsigned char ciphertext1,ciphertext2,cleartext,cleartext1;
    unsigned char temp[2];
    j=0;
    switch(g_UartCommand)
    {
        case GET_ENCRYPT_PK_COMD:                      //命令1:請求加密方公鑰
        {
            if(g_recv_count == 3)        //只配置最后一個字節(jié)進行收發(fā)轉換
            {
               //g_configer[TR_CONFIG_BYTE] = g_buf[0]; 
               
                //生成加密方私鑰,傳出g_encrypt_private_key:1個字節(jié)
                SHA_a_4(g_buf[0],&g_encrypt_private_key);
	        //生成公鑰,輸入g_encrypt_private_key,px(CONT),py(CONT);輸出公鑰g_encrypt_pk_x,g_encrypt_pk_y。	        
	        kp(g_encrypt_private_key,px,py,&g_encrypt_pk_x,&g_encrypt_pk_y);
                
                //生成串口一幀數(shù)據(jù)(命令字,數(shù)據(jù)長度,加密方的公鑰)
                g_buf_out[0]=0x01;
                g_buf_out[1]=0x04;
                g_buf_out[2]=g_encrypt_pk_x;
                g_buf_out[3]=g_encrypt_pk_y;
               // for(i=0;i<=1000;i++)
                //{Software_delay(200);}
                //從串口傳出加密方公鑰數(shù)據(jù)
                           // for(i=0;i<=30;i++)
               //{
               //delayms(20);
                for(i=0;i<=3;i++)
                {
                    send_uart_a_byte(g_buf_out[i]+0x30);
                }
//}//
            }
            else
            {
                g_uart_answer = 1;                            //如果g_recv_count不為 3或 17,則報錯。
            }
            break;
        }
        case SENT_DECRYPT_PK_COMD:                               //命令2:向加密方傳送解密方的公鑰
        {   
            g_decrypt_pk_x=g_buf[0];                           //保存解密方公鑰x
            g_decrypt_pk_y=g_buf[1];                          //保存解密方公鑰y
            g_buf_out[0]=0x02;
            g_buf_out[1]=0x02;
            for(i=0;i<=1;i++)
            {
               send_uart_a_byte(g_buf_out[i]+0x30);
            }
            break;
        }    
        case SENT_ENCRYPT_COMD:                                //命令3:向加密方發(fā)送加密命令
        {          
          //從串口收明文mw,向串口發(fā)密文cx,cy。交叉存。
           g_buf_out[j++]=0x03;
           g_buf_out[j++]=0x08;
           
        
           for(i=0;i<g_recv_count-2;i++)
           {
                //加密,mw為明文,輸出cx、cy為密文,yes為是嵌入。
                temp[0]=g_buf[i]&0x0F;
                temp[1]=g_buf[i]>>4;
                //for()
                encryption(temp[0],g_decrypt_pk_x,g_decrypt_pk_y,&ciphertext1,&ciphertext2,&yes);
                g_buf_out[j++]=ciphertext1;//傳出X
                g_buf_out[j++]=ciphertext2;//傳出Y
                g_buf_out[j++]=yes;//傳出嵌入標志
                
                encryption(temp[1],g_decrypt_pk_x,g_decrypt_pk_y,&ciphertext1,&ciphertext2,&yes);
                g_buf_out[j++]=ciphertext1;//傳出X
                g_buf_out[j++]=ciphertext2;//傳出Y
                g_buf_out[j++]=yes;//傳出嵌入標志
           }
           //從串口傳出加密方公鑰數(shù)據(jù)
           for(i=0;i<j;i++)
           {
               send_uart_a_byte(g_buf_out[i]);
           }
           break;
       }
       case GET_DECRYPT_PK_COMD:
       {
            if(g_recv_count == ONE_BYTE_CONFIG)        //只配置最后一個字節(jié)進行收發(fā)轉換
            {
               //g_configer[TR_CONFIG_BYTE] = g_buf[0]; 
               
                //生成解密方私鑰,傳出g_decrypt_private_key:1個字節(jié)
                SHA_b_4(g_buf[0],&g_decrypt_private_key);
	        //生成公鑰,輸入g_encrypt_private_key,px(CONT),py(CONT);輸出公鑰g_decrypt_pk_x,g_decrypt_pk_y。	        
	        kp(g_decrypt_private_key,px,py,&g_decrypt_pk_x,&g_decrypt_pk_y);

                //生成串口一幀數(shù)據(jù)(命令字,數(shù)據(jù)長度,解密方的公鑰)
                g_buf_out[0]=0x04;
                g_buf_out[1]=0x04;
                g_buf_out[2]=g_decrypt_pk_x;
                g_buf_out[3]=g_decrypt_pk_y;
                
                //從串口傳出解密方公鑰數(shù)據(jù)
                for(i=0;i<=3;i++)
                {
                    send_uart_a_byte(g_buf_out[i]+0x30);
                }

            }
            else
            {
                g_uart_answer = 1;                            //如果g_recv_count不為 3或 17,則報錯。
            }
            break;
       
       }
       case SENT_ENCRYPT_PK_COMD:
       {
            g_encrypt_pk_x=g_buf[0];                           //保存加密方公鑰x
            g_encrypt_pk_y=g_buf[1];                           //保存加密方公鑰y
            
            g_buf_out[0]=0x05;
            g_buf_out[1]=0x02;
            for(i=0;i<=1;i++)
            {
               send_uart_a_byte(g_buf_out[i]+0x30);
            }
            break;
       }
       case SENT_DECRYPT_COMD:
       {
           g_buf_out[j++]=0x06;
           g_buf_out[j++]=0x03;
           
 /*          for(i=0;i<g_recv_count-2;i++)
           {
                //加密,mw為明文,輸出cx、cy為密文,yes為是嵌入。
                //decode(g_buf[i],g_buf[i+1],g_encrypt_pk_x,g_encrypt_pk_y,yes,&cleartext);
                decode(g_buf[i],g_buf[i+1],g_encrypt_pk_x,g_encrypt_pk_y,g_buf[i+2],&cleartext);
                g_buf_out[j++]=cleartext;
                i++;
                i++;
           }*/

                //加密,mw為明文,輸出cx、cy為密文,yes為是嵌入。
                //decode(g_buf[i],g_buf[i+1],g_encrypt_pk_x,g_encrypt_pk_y,yes,&cleartext);
           decode(g_buf[0],g_buf[1],g_encrypt_pk_x,g_encrypt_pk_y,g_buf[2],&cleartext);
                
           decode(g_buf[3],g_buf[4],g_encrypt_pk_x,g_encrypt_pk_y,g_buf[5],&cleartext1);
         
          g_buf_out[j++]=cleartext|(cleartext1<<4);
           //從串口傳出加密方公鑰數(shù)據(jù)
           for(i=0;i<j;i++)
           {
               send_uart_a_byte(g_buf_out[i]);
           }
           break;
       }
        default:
        
            g_uart_answer = 1;                                //報錯
            
            break;
    }//switch()語句結束
}
unsigned char add(unsigned char add_1,unsigned char add_2)
{
    unsigned char sum;
    sum=add_1+add_2;
    sum=sum%p;
    return sum;

}



unsigned char sub(unsigned char sub_1,unsigned char sub_2)
{
    unsigned char sum;
    sum=sub_1-sub_2;
    sum=sum%p;
    return sum;
}



unsigned char mul(unsigned char mul_1,unsigned char mul_2)
{
    unsigned char sum;
    sum=mul_1*mul_2;
    sum=sum%p;
    return sum;
}



unsigned char division(unsigned char div_1,unsigned char div_2)
{
    unsigned char sum;
    sum=div_1/div_2;
    sum=sum%p;
    return sum;
}



void addition(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char *x3,unsigned char *y3)
{
    unsigned char x3_tmp=0;
	unsigned char y3_tmp=0;
	unsigned char fenzi=0;
	unsigned char fenmu=0;
	unsigned char kuohao=0;
	unsigned char kuohao2=0;
	unsigned char xiaokuohao=0;
	unsigned char dakuohao=0;


	if(x1==x2)
		square(x1,y1,&x3_tmp,&y3_tmp);   //如果兩個數(shù)相同,調(diào)用倍點

	else if(y1==0)
	{
		x3_tmp=x2;
		y3_tmp=y2;
	}
	else if(y2==0)
	{
		x3_tmp=x1;
		y3_tmp=y1;
	}
	else
	{
		fenzi=sub(y2,y1);//fenzi=y2-y1
		fenmu=sub(x2,x1);//fenmu=x2-x1
		kuohao=division(fenzi,fenmu);//kuohao=(y2-y1)/(x2-x1)
		kuohao2=mul(kuohao,kuohao);//kuohao2=kuohao^2
		x3_tmp=sub(kuohao2,x1);//x3
		x3_tmp=sub(x3_tmp,x2);//x3
		xiaokuohao=sub(x1,x3_tmp);//xiaokuohao=x1-x3
		dakuohao=mul(kuohao,xiaokuohao);//dakuohao=(y2-y1)/(x2-x1)*(x1-x3)
		y3_tmp=sub(dakuohao,y1);//y3
    }
	*x3=x3_tmp;
	*y3=y3_tmp;
}




void square(unsigned char x1,unsigned char y1,unsigned char *x3,unsigned char *y3)
{
	unsigned char x3_tmp=0;
	unsigned char y3_tmp=0;
	unsigned char fenzi=0;
	unsigned char fenmu=0;
	unsigned char kuohao=0;
	unsigned char kuohao2=0;
	unsigned char xiaokuohao=0;
	unsigned char dakuohao=0;
	unsigned char h2=2;
	unsigned char h3=3;
	

	if(y1==0)
	{
		x3_tmp=x1;
		y3_tmp=y1;
	}
	else
	{
		fenzi=mul(x1,x1);//fenzi=x1^2
		fenzi=mul(fenzi,h3);//fenzi=3*x1^2
		fenzi=add(fenzi,a);//fenzi=3*x1^2+a
		fenmu=mul(y1,h2);//fenmu=2*y1
		
		kuohao=division(fenzi,fenmu);//kuohao=(3*x1^2+a)/(2*y1)
		kuohao2=mul(kuohao,kuohao);//kuohao2=kuohao^2
		x3_tmp=sub(kuohao2,x1);
		x3_tmp=sub(x3_tmp,x1);//x3
		xiaokuohao=sub(x1,x3_tmp);//xiaokuohao=x1-x3
		dakuohao=mul(kuohao,xiaokuohao);//dakuohao=(3*x1^2+a)/(2*y1)*(x1-x3)
		y3_tmp=sub(dakuohao,y1);//y3
	}
    *x3=x3_tmp;
	*y3=y3_tmp;
}



void proclaimed(unsigned char mw,unsigned char *pmx,unsigned char *pmy,unsigned char *yes)
{
	unsigned char h1=1;
	unsigned char h20=20;
	unsigned char x3=0;
	unsigned char xa=0;
	unsigned char bufferyes=0;
	int t=0,j;




	x3=mul(mw,mw);
	x3=mul(x3,mw);
	xa=mul(mw,a);
	x3=add(x3,xa);
	x3=add(x3,b);//x3=x^3+4x+20

	t=oula(x3);

	if(t==1)   //可以嵌入
	{
		*pmx=mw;
	    *pmy=(unsigned char)sqrt(x3);
	}
	else
	{
		mw=mul(mw,h20);
		mw=sub(mw,h1);
		for(j=0;j<=19;j++)
		{
			mw=add(mw,h1);
			
			x3=mul(mw,mw);
	        x3=mul(x3,mw);
	        xa=mul(mw,a);
	        x3=add(x3,xa);
        	x3=add(x3,b);//x3=x^3+4x+20

			t=oula(x3);

			if(t==1)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性生活大片视频| 亚洲欧洲性图库| 香蕉久久夜色精品国产使用方法 | 色综合久久99| 国产日本亚洲高清| 国产精品一区专区| 欧美日本不卡视频| 爽好多水快深点欧美视频| 欧美性大战久久久| 亚洲午夜久久久久| 欧美日韩日日骚| 日韩在线观看一区二区| 制服.丝袜.亚洲.中文.综合| 亚洲国产日韩综合久久精品| 欧美视频中文字幕| 日韩高清一区二区| 欧美一区二区三区在线看| 蜜臀久久99精品久久久久久9| 91精品国产免费| 久久99精品久久久久| 欧美精品一卡二卡| 蜜芽一区二区三区| 久久色在线观看| 成人午夜电影小说| 一区二区三区日韩精品视频| 在线免费观看一区| 首页综合国产亚洲丝袜| 精品久久久久香蕉网| 国产馆精品极品| 亚洲欧洲性图库| 欧美日韩大陆在线| 美国av一区二区| 国产免费久久精品| 日本高清成人免费播放| 午夜精品爽啪视频| 久久久精品天堂| 91网站最新地址| 国内一区二区视频| 亚洲高清视频的网址| 国产日韩欧美精品一区| 91精品国产免费久久综合| 91浏览器入口在线观看| 国产一区欧美日韩| 日本午夜精品一区二区三区电影| 国产精品电影一区二区三区| 日韩欧美一级二级| 欧美日韩精品一区视频| 91网上在线视频| 国产成人午夜精品影院观看视频| 日本视频一区二区| 亚洲综合久久久久| 中文字幕av免费专区久久| 在线播放/欧美激情| 一本大道av一区二区在线播放| 国产成人在线视频网站| 日本三级亚洲精品| 亚洲成人av资源| 一区二区三区欧美日韩| 久久久久久免费网| 精品国产不卡一区二区三区| 欧美一区二区在线播放| 欧美日韩一区二区三区四区| 一本色道久久综合狠狠躁的推荐| 成人免费黄色大片| 粉嫩一区二区三区性色av| 国内成人免费视频| 人妖欧美一区二区| 日韩电影在线观看网站| 日韩一区精品视频| 日韩在线一二三区| 日韩国产在线一| 午夜精品福利在线| 天堂久久久久va久久久久| 亚洲bdsm女犯bdsm网站| 偷拍一区二区三区| 日韩国产欧美三级| 麻豆91免费看| 精品无码三级在线观看视频| 久久国产日韩欧美精品| 免费不卡在线观看| 精品一区二区三区免费观看| 捆绑变态av一区二区三区| 久久精品国产久精国产爱| 韩国一区二区在线观看| 国产精品18久久久久久vr| 国产精品夜夜爽| 成人免费视频国产在线观看| 99久久久精品| 91久久久免费一区二区| 欧美精品1区2区| 337p日本欧洲亚洲大胆色噜噜| 久久婷婷色综合| 国产精品久久毛片av大全日韩| 亚洲人成精品久久久久久 | 日韩欧美一区二区久久婷婷| 精品国产乱码久久久久久免费| 久久夜色精品一区| 亚洲国产精品精华液ab| 亚洲精品视频在线观看免费| 日韩影院精彩在线| 国产高清成人在线| 一本大道久久精品懂色aⅴ| 制服丝袜av成人在线看| 久久久美女毛片| 亚洲精品国产a久久久久久 | 久久这里只有精品6| 中文字幕日韩av资源站| 香蕉av福利精品导航| 国产乱色国产精品免费视频| 色综合天天综合狠狠| 欧美日韩1区2区| 国产女人aaa级久久久级| 亚洲高清在线精品| 国产成人精品www牛牛影视| 欧美色图12p| 国产日韩精品一区二区三区| 亚洲国产精品尤物yw在线观看| 精品一区二区三区在线播放视频| www.色综合.com| 欧美成人video| 一区二区三区在线视频播放| 狠狠色丁香婷婷综合久久片| 色婷婷久久久亚洲一区二区三区| 日韩欧美不卡一区| 一区二区三区在线播| 国产一区91精品张津瑜| 欧美日高清视频| 国产精品久久福利| 久久精品国产澳门| 91蝌蚪porny| 久久久精品欧美丰满| 天堂久久一区二区三区| 91视频免费看| 久久先锋影音av鲁色资源| 日韩高清在线不卡| 欧美性猛交xxxx乱大交退制版| 国产亚洲污的网站| 日韩高清国产一区在线| 色94色欧美sute亚洲线路一久| 久久久精品欧美丰满| 秋霞影院一区二区| 精品视频一区二区三区免费| 国产精品三级av| 国产剧情一区在线| 欧美成人一区二区三区在线观看| 一区二区三区欧美日韩| 成人精品高清在线| 久久蜜桃一区二区| 国内精品在线播放| 日韩精品最新网址| 日韩中文字幕1| 欧美日韩综合色| 亚洲视频在线观看一区| 成人综合婷婷国产精品久久免费| 日韩精品自拍偷拍| 美女精品一区二区| 欧美电影免费提供在线观看| 日本一区中文字幕| 91麻豆精品国产91久久久资源速度| 一区二区三区日韩精品视频| 日本道色综合久久| 亚洲精品免费在线| 欧洲在线/亚洲| 亚洲一区二区三区小说| 欧美丝袜自拍制服另类| 亚洲影院免费观看| 欧美色男人天堂| 三级久久三级久久久| 欧美一区日本一区韩国一区| 日韩专区欧美专区| 日韩欧美中文一区| 国产一区二区影院| 国产午夜精品一区二区三区视频| 国产成+人+日韩+欧美+亚洲| 日本一区二区三区免费乱视频| 成人av网在线| 亚洲美腿欧美偷拍| 欧美日韩电影在线播放| 男人的天堂亚洲一区| 2023国产精品| 成人app在线观看| 一区二区三区日韩欧美精品| 欧美巨大另类极品videosbest| 日本在线不卡视频一二三区| 久久久久久久免费视频了| 成人午夜短视频| 亚洲一区电影777| 欧美一区二区三区免费视频| 国产一区二区福利视频| 亚洲欧美综合在线精品| 欧美日韩国产高清一区二区三区 | 成人免费在线播放视频| 日本乱人伦一区| 蜜臀av一区二区| 国产女人水真多18毛片18精品视频 | 国产成人精品免费| 夜夜精品浪潮av一区二区三区| 欧美高清精品3d| 成人免费看片app下载| 亚洲愉拍自拍另类高清精品|