程序源代码
更新时间:2023-08-10 12:23:01 阅读量: 工程科技 文档下载
程 序 源 代 码
第一部分:相对算法代码
(一)提零压缩生成流密文程序
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
#include"time.h"
#include"stdio.h"
#include"fstream.h"
#include"io.h"
char getword(FILE *fp)
{int *s;
int i;
s=&i;
s[0]=getc(fp);
s[1]=getc(fp);
return (i);}//读入一个字
int position(int a,int b)//求数组元素之间相对关系的函数:0表示与本身同性;而1反之
{
if((a&&b)||(!a&&!b))
return 0;
else
return 1;
}
int main()
{ static unsigned char alawbyte[50000];//存放A率压缩后的样值
static int data[50000];
long offset=0;
int i;
int j=0;
int k=0;
long samples=0;
static int bitstream[50000];
static int bit[50000];//总的关系比特流
static int a[50000];//存放非零元素的数组
static int abit[50000];//存放非零元素数组的关系比特流
static int b[50000];//存放零元素的数组
static int bbit[50000];//存放零元素数组的关系比特流
int l=0;int m,n,t=0;
FILE *fp;
if((fp=fopen("m8000-1out_high.wav","rb"))==NULL)
{ printf("cannot open file");
exit(0);}
i=0;
while(!feof(fp))
{ bitstream[i]=getc(fp);
i++;}
for(k=0;k<16;k++)
printf("%d",bitstream[k]);
k=0;m=0;n=0;
for(j=0;j<i;j++)
{
bit[k]=position(bitstream[j],bitstream[j+1]);
k++;
if(bitstream[j])
{
a[m]=bitstream[j];
abit[m]=position(bitstream[j],bitstream[j+1]);
m++;
}
else
{
b[n]=bitstream[j];
bbit[n]=position(bitstream[j],bitstream[j+1]);
n++;
}
}
for(l=0;l<10;l++)
printf("%d",abit[l]);
printf("\n");
for(l=0;l<10;l++)
printf("%d",bbit[l]);
ofstream out1("G723.1编码提零压缩后的比特流密文a.wav",ios::binary);//存放最终转换好的比特流文件
if(!out1)
{printf("Cannot open output file.\n!");
return 1;}
offset=0;
out1.seekp(offset,ios::beg);
for(t=0;t<=m-1;t++)
{out1.write((char *)&a[t],2);}
out1.close();
ofstream out3("G723.1编码提零压缩后的零元素的数组b.wav",ios::binary);//存放最终转换好的比特流文件
if(!out3)
{printf("Cannot open output file.\n!");
return 1;}
offset=0;
out3.seekp(offset,ios::beg);
for(t=0;t<=n-1;t++)
{out3.write((char *)&b[t],1);}
out3.close();
ofstream out4("G723.1编码提零压缩后的相对关系bbit.wav",ios::binary);//存放最终转换好的比特流文件
if(!out4)
{printf("Cannot open output file.\n!");
return 1;}
offset=0;
out4.seekp(offset,ios::beg);
for(t=0;t<=n-1;t++)
{out4.write((char *)&bbit[t],1);}
out4.close();
ofstream out2("G723.1编码提零压缩后的相对关系abit.wav",ios::binary);//存放最终转换好的比特流文件
if(!out2)
{printf("Canno
t open output file.\n!");
return 1;}
offset=0;
out2.seekp(offset,ios::beg);
for(t=0;t<=m-1;t++)
{out2.write((char *)&abit[t],1
);}
out2.close();
ofstream out5("G723.1编码提零压缩后的相对关系bit.wav",ios::binary);//存放最终转换好的比特流文件
if(!out5)
{printf("Cannot open output file.\n!");
return 1;}
offset=0;
out5.seekp(offset,ios::beg);
for(t=0;t<=k-1;t++)
{out5.write((char *)&bit[t],1);}
out5.close();
return 0;
}
(二)BIT流展开和LSB嵌入程序代码
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
#include"time.h"
#include"stdio.h"
#include"fstream.h"
#include"io.h"
char getword(FILE *fp)
{int *s;
int i;
s=&i;
s[0]=getc(fp);
s[1]=getc(fp);
return (i);}//读入一个字
int main()
{ static unsigned char alawbyte[5000000];//存放A率压缩后的样值
int channel=0,samplespersec=0,bitpersample=0;
static int data[5000000];
long offset=0;
static int head[44];
int i;
int j=0;
int k=0;
long samples=0;
static int bitstream[5000000];
static int bitstream1[5000000];
int l=0;
int bit=0;
static int group[8];
ifstream in("f8000-1alaw.wav",ios::binary);
if(!in)
{cout<<"Cannot open input file.\n";
return 1;}
offset=0;
in.seekg(offset,ios::beg);
for(i=0;i<=28;i++)
in.read((char *)&head[i],2);//将头文件读入HEAD数组中
offset=54;
in.seekg(offset,ios::beg);
in.read((char *)&samples,4);
offset=58;
in.seekg(offset,ios::beg);
for(i=0;i<=samples-1;i++)
{in.read((char *)&data[i],1);}//首先将数据全部读入data数组中
in.close();
FILE *fp;//此段程序读入G723.1编码压缩的密文比特流文件
if((fp=fopen("G723.1编码去零压缩后的m8000-1out_high.wav","rb"))==NULL)
{cout<<"cannot open file"<<endl;
exit(0);}
i=0;
while(!feof(fp))
{bitstream[i]=getword(fp);
i++;}
cout<<i-1<<endl;
fclose(fp);
l=0;
k=0;
while(k<i-1)
{for(j=0;j<8;j++)
{bit=bitstream[k]&0x0080;
if(bit==0)
{bitstream1[l]=0;
l++;}
else
{bitstream1[l]=1;
l++;}
bitstream[k]<<=1;}
k++;}//此段程序将bit流散开
for(i=0;i<l;i++)
{cout<<bitstream1[i]<<' ';}
for(i=0;i<=(l-1);i++)
{if(bitstream1[i]==1)//bitstream1[i]=1;
{if(data[i]%2==0)
data[i]=data[i]+1;
else
data[i]=data[i];}
else if(bitstream1[i]==0)//bitstream1[i]=0;
{if(data[i]%2==0)
data[i]=data[i];
else
data[i]=data[i]-1;}}//进行LSB位的替换
ofstream out1("LSB替换后的加密语音alaw.wav",ios::binary);
if(!out1)
{cout<<"Cannot open output file.\n!";
return 1;}
offset=0;
out1.seekp(offset,ios::beg);
for(i=0;i<=28;i++)
{out1.write((char *)&head[i],2);}
offset=58;
out1.seekp(offset,ios::beg);
for(i=0;i<=samples-1;i++)
{out1.write((char *)&data[i],1);}
out1.close();
return 0;
}
(三)提取程序代码
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
#include"time.h"
#include&
quot;stdio.h"
#include"fstream.h"
#include"io.h"
int multiply(int k)
{
int temp=1;
for(int i=0;i<k;i++)
temp
*=2;
return temp;
}
int main()
{static unsigned char alawbyte[5000000];//存放A率压缩后的样值
int channel=0,samplespersec=0,bitpersample=0;
static int data[5000000];
long offset=0;
static int head[44];
static int a[1000000];
int i;
int j=0;
int k=0;
int l=0;
long samples=0;
static int bitstream[5000000];
static int bitstream1[5000000];
static int bit[5000000];
static int bit1[5000000][8];
ifstream in("LSB替换后的加密语音alaw.wav",ios::binary);
if(!in)
{ cout<<"Cannot open input file.\n";
return 1;}
offset=0;
in.seekg(offset,ios::beg);
for(i=0;i<=28;i++)
in.read((char *)&head[i],2);//将头文件读入HEAD数组
offset=54;
in.seekg(offset,ios::beg);
in.read((char *)&samples,4);
cout<<"该文件样本数为:"<<samples<<endl;
offset=58;
in.seekg(offset,ios::beg);
for(i=0;i<=samples-1;i++)
{in.read((char *)&data[i],1);}//首先将数据全部读入data数组中
in.close();
k=1;l=0;
i=0;
for(i=0;i<=samples-1;i++)
{
if(data[i]%2==0)
{bit[l]=0;l++;}
else
{bit[l]=1;l++;}
//cout<<bit[i]<<' ';
//cout<<l<<endl;
}
for(i=0;i<=l;i++)
{
bit1[(i/8)][i%8]=bit[i];
}
for(i=0;i<=(l/8);i++)
{
a[i]=0;
for(j=0;j<8;j++)
a[i]+=bit1[i][j]*(multiply(7-j));
}
cout<<endl;
// for(i=0;i<(l/8);i++)
//cout<<a[i]<<' '<<endl;
ofstream out1("恢复的压缩密文m8000-1out_high.wav",ios::binary);
if(!out1)
{cout<<"Cannot open output file.\n!";
return 1;}
offset=0;
out1.seekp(offset,ios::beg);
k=0;
for(i=0;i<=(l/8);i++)
{
out1.write((char *)&a[i],2);
k++;}
out1.close();
return 0;}
(四)恢复源密文的程序代码
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
#include"time.h"
#include"stdio.h"
#include"fstream.h"
#include"io.h"
char getword(FILE *fp)
{int *s;
int i;
s=&i;
s[0]=getc(fp);
s[1]=getc(fp);
return (i);}//读入一个字
int main()
{ static unsigned char alawbyte[5000000];//存放A率压缩后的样值
static int data[5000000];
long offset=0;
int i;
int j=0;
int k=0;
long samples=0;
static int abit[5000000];
static int bbit[5000000];
static int c[5000000];
static int d[5000000];
static int e[5000000];
int m=0;int n=0;int l=0;int t=0;int p=0;int q=0;int w=0;
FILE *fp;
if((fp=fopen("G723.1编码提零压缩后的相对关系abit.wav","rb"))==NULL)
{ cout<<"cannot open file"<<endl;
exit(0);}
i=0;
while(!feof(fp))
{ abit[i]=getc(fp);
i++;}
fclose(fp);
//FILE *fp;
if((fp=fopen("G723.1编码提零压缩后的相对关系bbit.wav","rb"))==NULL)
{ cout<<"cannot open file"<<endl;
exit(0);}
l=0;
while(!feof(fp))
{ bbit[l]=getc(fp);
l++;}
fclose(fp);
//FILE *fp;
if((fp=fopen("G723.1编码提零压缩后的零元素的数组b.wav","
rb"))==NULL)
{ cout<<"cannot open file"<<endl;
exit(0);}
j=0;
while(!feof(fp))
{ c[j]=getc(fp);
j++;}
fcl
ose(fp);
//FILE *fp;
if((fp=fopen("恢复的压缩密文m8000-1out_high.wav","rb"))==NULL)
{ cout<<"cannot open file"<<endl;
exit(0);}
k=0;
while(!feof(fp))
{ d[k]=getword(fp);
k++;}
fclose(fp);
e[0]=d[0];
t=0;m=1;n=1;p=1;q=0;
for(m=1;m<i+l-2;m++)
{
if(t==0)
{
if(abit[p-1]==0)
{
e[n]=d[p];
n++;p++;
}
else
{
e[n]=c[q];
n++;q++;
t=1;
}
}
else
{
if(bbit[q-1]==0)
{
e[n]=c[q];
n++;q++;
}
else
{
e[n]=d[p];
n++;p++;
t=0;
}
}
}
for(w=0;w<20;w++)
cout<<e[w]<<endl;
ofstream out1("G723.1解密的m8000-1out_high.wav",ios::binary);//存放最终转换好的比特流文件
if(!out1)
{cout<<"Cannot open output file.\n!";
return 1;}
offset=0;
out1.seekp(offset,ios::beg);
for(w=0;w<n;w++)
{out1.write((char *)&e[w],1);}
out1.close();
return 0;
}
??
??
??
??
正在阅读:
程序源代码08-10
高频课程设计AM波调制与解调 - 图文10-24
DELMIA学习要点 - 图文10-17
论杜甫诗歌沉郁顿挫的艺术特点08-05
高一英语试卷分析07-21
建筑给排水系统中节水节能设计浅析08-14
想起那件事我就感动作文400字06-23
余世存、刘柠 等:人格的力量05-08
GMSK调制器实验报告(课程设计)06-23
游乔家大院作文范文04-18
- 幼儿园大班社会活动教案:节水小能手
- 2018年考研数学三真题与答案解析
- 出租车乘客满意度指数测评的方法_意义
- 小学音乐欣赏课《渔舟唱晚》课例分析
- 四年级数学确定位置课后训练题
- 小学生猜字谜大全及答案
- 湘潭市中考满分作文-项目一
- 管理会计公式
- 无锡市天一实验学校2013-2014学年七年级下数学期中试卷
- 搅拌摩擦焊接过程中材料流动形式
- ZYOF_ERP_EUT_讲义_PS_集成问题-3
- 疯狂婚约分集剧情第28集(共32集)_疯狂婚约剧情介绍_疯狂婚约大结局_疯狂婚约演员表
- 部编版语文三年级下册 词语汇总
- 《大学英语三》作业及参考答案
- 信息技术对教学的影响和反思
- 专业建设调研
- 子不教父之过,教不好谁之过
- 2012届高考考纲英语3500词汇冲刺配套练习(三)
- 成本控制制度
- 滚筒干燥机维护检修规程