*=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