⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hi_des_api.c

📁 嵌入式linux系统下hi3510平台的osd开发源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		if(des_ctrl((DES_SET_KEY|cltword), (unsigned char *)pcipher) != 0)		    return -1;     		for(i=0;i<plaintext_length;i=i+8)                                		{                       reverse_array(&pplaintext[i]);	            if(des_ctrl((DES_SET_M|cltword),&pplaintext[i]) != 0)			    return -1;		    if(des_ctrl((DES_SET_START|cltword),0) != 0)		        return -1;                                   if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                       return -1;		    if(pouttext == 0)                    {                        for(k=0;k<8;k++)                        {		           pplaintext[i+k] = temp_out.outtrans[7-k];                        }                     }		    else                    {                                               for(k=0;k<8;k++)                        {		           pouttext[i+k] = temp_out.outtrans[7-k];                        }                                           }                      reverse_array(&pplaintext[i]);                        //reverse_array(&pouttext[i]);                        		}					return 0;      	}   		/*4 6 for des; 5 7 for 3des*/	case DES_MODE_CBC:  		{		    temp_iv = des_iv;			if(des_ctrl((DES_SET_KEY|cltword),(unsigned char *)pcipher) != 0)			    return -1;   				          	                     			for(i=0;i<plaintext_length;i+=8)			{                                reverse_array(&pplaintext[i]);                            if(i != 0)			    {			        temp_iv =temp_out.ivouttrans;			    }				if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)				    return -1;                          				if(des_ctrl((DES_SET_M|cltword),&pplaintext[i]) != 0)				    return -1;                                                    				if(des_ctrl((DES_SET_START|cltword),0) !=0)				    return -1;                                               if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                return -1;    			if(pouttext == 0)                            for(k=0;k<8;k++)                            {		                pplaintext[i+k] = temp_out.outtrans[7-k];                            }     		        else                            for(k=0;k<8;k++)                            {		                pouttext[i+k] = temp_out.outtrans[7-k];                            }                             reverse_array(&pplaintext[i]);                            //reverse_array(&pouttext[i]);		      }				return 0;		}		/* 8 a for des(64bit);  9  b for 3des(64bit); */		/* 18 1a for des(8bit);	19 1b for 3des(8bit);*/		/* 28 2a for des(1bit); 29 2b for 3des(1bit);*/		/* 38 3a for des(64bit);39 3b for 3des(64bit);*/		case DES_MODE_CFB:  		{		    temp_iv = des_iv;			if(shift == DES_SHIFT_BIT8)			{				if(des_ctrl((DES_SET_KEY|cltword),(unsigned char *)pcipher) != 0)				    return -1;  	         				for(i=0;i<plaintext_length;i=i+8)				{				                                        //reverse_array(&pplaintext[i]);				    for(j=0;j<8;j++)				    {    				        if(!((i == 0) && (j == 0)))    				        {    			                   temp_iv = temp_out.ivouttrans;				        					}    					if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)    					    return -1;    					temp_plain_8[7] = pplaintext[i+j];    													                                                                 // printf("temp_plaintext_8 :%x \n",pplaintext[7]);    					if(des_ctrl((DES_SET_M|cltword),temp_plain_8) != 0)    					    return -1;                      					if(des_ctrl((DES_SET_START|cltword),0) != 0)    					    return -1;                                                       if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                            return -1;    					rout[j] = temp_out.outtrans[7];    					out[j]= rout[j];	    					    			           }    			           if(pouttext == 0)                                        for(k=0;k<8;k++)                                        {        			             pplaintext[i+k] = out[k];                                        }         		           else                                        for(k=0;k<8;k++)                                        {        			              pouttext[i+k] = out[k];                                        }                               // reverse_array((unsigned char *)(&pouttext[i]));                              // reverse_array((unsigned char *)(&pplaintext[i]));				}			}			else if(shift == DES_SHIFT_BIT1)			{    	                  					if(des_ctrl((DES_SET_KEY|cltword),(unsigned char *)pcipher) != 0)				    return -1; 				for(i=0;i<plaintext_length;i=i+8)				{                                                                         //reverse_array((unsigned char*)&pplaintext[i]);				    for(j=0;j<8;j++)				    {                                        out[j]=0;                                        for(k=0;k<8;k++)                                       {    					    if(!((i == 0)&&(k==0) && (j == 0)))    					    {    			                        temp_iv = temp_out.ivouttrans;	     					    }       					    if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)    					        return -1;                                             temp_plain_1[7] = pplaintext[i+j] <<k;    					    if(des_ctrl((DES_SET_M|cltword),temp_plain_1) != 0)    					        return -1;                      					    if(des_ctrl((DES_SET_START|cltword),0) != 0)    					        return -1;                                            if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                                return -1;                                                                                                      rout[j] =  (temp_out.outtrans[7]& 0x80)>>k;                                             out[j] |= rout[j];                                        }    						                                         if(pouttext == 0)        			            pplaintext[i+j] = out[j];         		                 else        			           pouttext[i+j] = out[j];					    }                                    //reverse_array((unsigned char *)&out);                                    //reverse_array((unsigned char *)&pplaintext[i]);    			            								}			}  			else			{                          				if(des_ctrl((DES_SET_KEY|cltword),(unsigned char *)pcipher) != 0)				    return -1;   									          						for(i=0;i<plaintext_length;i=i+8)				{                                      reverse_array(&pplaintext[i]);				    if(i!=0)				    {			               temp_iv = temp_out.ivouttrans;				    }                				    if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)				        return -1;                           				    if(des_ctrl((DES_SET_M|cltword),&pplaintext[i]) != 0)					    return -1;                 				    if(des_ctrl((DES_SET_START|cltword),0) != 0)					    return -1;                                    if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                      return -1;                         			    if(pouttext == 0)                                         for(k=0;k<8;k++)        			         {                                              pplaintext[i+k] =  temp_out.outtrans[7-k];                                         }         		             else                                       for(k=0;k<8;k++)        			       {                                            pouttext[i+k] = temp_out.outtrans[7-k];                                       }         	                                    //reverse_array((unsigned char *)(&pouttext[i]));                                    reverse_array(&pplaintext[i]);				} 				                       			}	                                   		    return 0;		}		/* c e for des(64bit);  d  f for 3des(64bit);*/		/* 1c 1e for des(8bit);	1d 1f for 3des(8bit);*/		/* 2c 2e for des(1bit); 2d 2f for 3des(1bit);*/		/* 3c 3e for des(64bit);3d 3f for 3des(64bit);*/	    	case DES_MODE_OFB:		{                  		        temp_iv = des_iv;			if(shift == DES_SHIFT_BIT8)			{				if(des_ctrl((DES_SET_KEY|cltword),(unsigned char*)pcipher) != 0)				    return -1;   	         				for(i=0;i<plaintext_length;i+=8)				{                                     // reverse_array(&pplaintext[i]);				    for(j=0;j<8;j++)				    {    				        if(!((i == 0) && (j == 0)))    				        {    			                    temp_iv = temp_out.ivouttrans;				        				        }    			                if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)    				            return -1;     				        temp_plain_8[7] = pplaintext[i+j] ;   													                               				        if(des_ctrl((DES_SET_M|cltword),temp_plain_8) != 0)    				           return -1;                      				        if(des_ctrl((DES_SET_START|cltword),0) != 0)    				           return -1;                                        if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                           return -1;    				         rout[j] = temp_out.outtrans[7];    				         out[j]= rout[j];	    			             }                                         //reverse_array((unsigned char *)(&pplaintext[i]));                                        // reverse_array((unsigned char *)(&out));                                    if(pouttext == 0)                                        for(k=0;k<8;k++)                                        {        			             pplaintext[i+k] = out[k];                                        }         		            else                                        for(k=0;k<8;k++)                                        {        			            pouttext[i+k] = out[k];                                        } 			    } 			}			else if(shift == DES_SHIFT_BIT1)			{		             if(des_ctrl((DES_SET_KEY|cltword),(unsigned char*)pcipher) != 0)				    return -1; 				for(i=0;i<plaintext_length;i+=8)				{                                                                         // reverse_array(&pplaintext[i]);				    for(j=0;j<8;j++)				    {                                        out[j]=0;                                        for(k=0;k<8;k++)                                        {    					    if(!((i == 0)&&(k==0) && (j == 0)))    					    {    			                        temp_iv = temp_out.ivouttrans;	     					    }       					    if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)    					        return -1;                                              temp_plain_1[7]=pplaintext[i+j]<<k;    					    if(des_ctrl((DES_SET_M|cltword),temp_plain_1) != 0)    					        return -1;                      					    if(des_ctrl((DES_SET_START|cltword),0) != 0)    					        return -1;                                            if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                                return -1;                                                            rout[j] =  (temp_out.outtrans[7]&0x80)>>k;                                             out[j] |= rout[j];    						                                         }                                         if(pouttext == 0)        			            pplaintext[i+j] = out[j];         		                 else        			            pouttext[i+j] = out[j];				             }                                      //reverse_array((unsigned char *)&pplaintext[i]);                                      //reverse_array((unsigned char *)&out);		              }		     }   	             else                     {				if(des_ctrl((DES_SET_KEY|cltword),(unsigned char *)pcipher) != 0)				    return -1;   									          						for(i=0;i<plaintext_length;i+=8)				{                                      reverse_array(&pplaintext[i]);				    if(i!=0)				    {			                temp_iv = temp_out.ivouttrans;				    }				    if(des_ctrl((DES_SET_IV|cltword),temp_iv) != 0)				        return -1;                           				    if(des_ctrl((DES_SET_M|cltword),&pplaintext[i]) != 0)					    return -1;                  				    if(des_ctrl((DES_SET_START|cltword),0) != 0)					    return -1;                                    if(des_ctrl((DES_GET_DATA|cltword),(unsigned char *)&temp_out) != 0)                                         return -1;                                    if(pouttext == 0)                                         for(k=0;k<8;k++)        			         {                                              pplaintext[i+k] =  temp_out.outtrans[7-k];                                         }         		             else                                         for(k=0;k<8;k++)        			         {                                               pouttext[i+k] = temp_out.outtrans[7-k];                                         }                                           reverse_array((unsigned char *)(&pplaintext[i]));                                         //reverse_array((unsigned char *)(&pouttext[i]));				}			}	                                   		    return 0;		}		default:		{			return -EINVAL;		}	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -