【发布时间】:2020-07-07 02:09:51
【问题描述】:
我的明文首先被转换为二进制文本,然后它应该被分成 64 位块,密钥必须单独加密这些块。例如,如果我的文本有 90 位,它应该用零补充,这样它就有 128 位。我不知道该怎么做。这是我的代码:
string ifile = "filetxt.txt";
string ofile = "file2.txt";
string key = "keywordd";
vector<int> k;
vector<int> txt;
char text;
vector<int> o;
int i;
int c = 0;
int d = 1;
void f() {
ifstream ist ("filetxt.txt");
ofstream ost ("file2.txt");
int a[64], i;
while (ist >> text) {
for(char& text : key) {
for(i=0; i < 8; i++){
a[i] = text%2;
text = text/2;
}
for(i=i-1; i >= 0 ;i--){
k.push_back(a[i]);
}
}
if (ist) {
for(i=0; i < 8; i++){
a[i] = text%2;
text = text/2;
}
for(i=i-1 ;i >= 0 ;i--){
txt.push_back(a[i]);
}
for(int j = 0; j < 8; j++) {
if(k[j] == txt[j]) {
o.push_back(c);
} else if (k[j] != txt[j]) {
o.push_back(d);
}
}
for(i=0; i<8; i++) {
ost << o[i];
}
for(i=0; i<8; i++) {
cout << o[i];
}
}
}
cout << endl;
for(i=0; i<64; i++) {
cout << k[i];
}
cout << endl;
for(i=0; i<64; i++) {
cout << txt[i];
}
}
int main()
{
f();
return 0;
}
我打算这样做:
if (txt.size()< 64){
for(i= 0; i< 64- txt.size();i++){
txt.push_back(c);
}
}
我认为问题出在 txt 向量中,因为如果我想打印它,我
【问题讨论】:
-
您的示例代码不是您想要的...它只会将
txt增加到 64 位...您似乎想要与 64 位块对齐...但它似乎也您将每个位存储在int中。那是相当低效的。 -
你知道我该如何解决这个问题吗?