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

📄 rs_encoder.cpp

📁 cmmb RS 编码
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
#include <string.h>

unsigned char GFmultiply(unsigned char a,unsigned char b);


void RS_Encode(unsigned char msg[],unsigned char encode[],int K)
{
	int i,j,loop;
    unsigned char gg[65];
    unsigned char gg_224[]={79,44,81,100,49,183,56,17,232,187,126,104,31,103,52,118,1};
	unsigned char gg_192[]={228,231,214,81,113,204,19,169,10,244,117,219,130,12,160,151,195,170,150,151,251,218,245,166,149,183,109,176,148,218,21,161,240,25,15,71,62,5,17,32,157,194,73,195,218,14,12,122};
    unsigned char gg_176[]={106,117,43,201,70,139,47,64,127,181,48,25,230,85,31,157,156,123,88,44,149,223,165,36,127,46,142,212,233,71,149,88,165,227,80,105,44,72,147,55,60,85,70,132,229,230,217,155,38,112,43,174,169,136,23,60,186,63,198,205,135,171,40,159,1};

	memset(gg, 0,sizeof(gg));
	if(K==224)
	{
		memcpy(gg, gg_224, sizeof(gg_224));
	}   
	else if(K==192)
	{
		memcpy(gg, gg_192, sizeof(gg_192));		
	}	
	else if(K==176)
	{
		memcpy(gg, gg_176, sizeof(gg_176));		
	}

unsigned char d[64]={0};
unsigned char g1[240];
unsigned char g2[240];
unsigned char g3[240];
unsigned char DEND[240];
unsigned char out[240];
unsigned char dd[240];

DEND[0]=0;
for (i=0;i<240;i++)
   { 
	if(i<K)
       { 
		g1[i]=msg[i];
        g3[i]=g1[i]^DEND[i];
        for (j=0;j<(240-K);j++)
        {
			out[j]=GFmultiply(g3[i],gg[j]);
        }

        if(K==224)
		{  
			dd[0]=out[0];
            for (loop=1;loop<16;loop++)
			{
				dd[loop]=d[loop-1]^out[loop];
            }
			for(loop=0; loop<16; loop++)
			{
				d[loop]=dd[loop];
			}
			DEND[i+1]=d[15];
		}
		
        else if(K==192)
		{
			dd[0]=out[0];
            for (loop=1;loop<48;loop++)
            {    
				dd[loop]=d[loop-1]^out[loop];
            }
			for(loop=0; loop<48; loop++)
			{
				d[loop]=dd[loop];
			}
            DEND[i+1]=d[47];
		}
		
        else if(K==176)
		{ 
			dd[0]=out[0];
            for (loop=1;loop<64;loop++)
            {    
				dd[loop]=d[loop-1]^out[loop];
            }
			for(loop=0; loop<64; loop++)
			{
				d[loop]=dd[loop];
			}

            DEND[i+1]=d[63]; 
		}
        g2[i]=0;
	}

    else
      {  
		g1[i]=0;
        g3[i]=0;
		for (j=0;j<(240-K);j++)
        {
			out[j]=GFmultiply(g3[i],gg[j]);
        }

        if(K==224)
		{ 
			dd[0]=out[0];
            for (loop=1;loop<16;loop++)
               { 
				dd[loop]=d[loop-1]^out[loop];
               }
			for(loop=0; loop<16; loop++)
			{
				d[loop]=dd[loop];
			}
            DEND[i+1]=d[15];
		}

        if(K==192)
		{
			dd[0]=out[0];
            for (loop=1;loop<48;loop++)
               { 
				dd[loop]=d[loop-1]^out[loop];
               }
			for(loop=0; loop<48; loop++)
			{
				d[loop]=dd[loop];
			}
            DEND[i+1]=d[47]; 
		}

        if(K==176)
		{ 
			dd[0]=out[0];
            for (loop=1;loop<64;loop++)
               { 
				dd[loop]=d[loop-1]^out[loop];
               }
			for(loop=0; loop<64; loop++)
			{
				d[loop]=dd[loop];
			}
            DEND[i+1]=d[63];  
		}
        g2[i]=g1[i]^DEND[i]; 
      }
   }
//encode[240]={msg[],g2[K+1:240]};
for (i=0;i<K;i++)
   {
	encode[i]=msg[i];
   }
for (i=K;i<240;i++)
   {
   	encode[i]=g2[i];
   }
}




⌨️ 快捷键说明

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