С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.02.2019
Сообщений: 6
1

Массив заполняется нолями

09.06.2020, 16:11. Показов 243. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
 
using namespace std;
 
typedef unsigned char byte;
 
static const byte fTable[256] = {
    0xa3,0xd7,0x09,0x83,0xf8,0x48,0xf6,0xf4,0xb3,0x21,0x15,0x78,0x99,0xb1,0xaf,0xf9,
    0xe7,0x2d,0x4d,0x8a,0xce,0x4c,0xca,0x2e,0x52,0x95,0xd9,0x1e,0x4e,0x38,0x44,0x28,
    0x0a,0xdf,0x02,0xa0,0x17,0xf1,0x60,0x68,0x12,0xb7,0x7a,0xc3,0xe9,0xfa,0x3d,0x53,
    0x96,0x84,0x6b,0xba,0xf2,0x63,0x9a,0x19,0x7c,0xae,0xe5,0xf5,0xf7,0x16,0x6a,0xa2,
    0x39,0xb6,0x7b,0x0f,0xc1,0x93,0x81,0x1b,0xee,0xb4,0x1a,0xea,0xd0,0x91,0x2f,0xb8,
    0x55,0xb9,0xda,0x85,0x3f,0x41,0xbf,0xe0,0x5a,0x58,0x80,0x5f,0x66,0x0b,0xd8,0x90,
    0x35,0xd5,0xc0,0xa7,0x33,0x06,0x65,0x69,0x45,0x00,0x94,0x56,0x6d,0x98,0x9b,0x76,
    0x97,0xfc,0xb2,0xc2,0xb0,0xfe,0xdb,0x20,0xe1,0xeb,0xd6,0xe4,0xdd,0x47,0x4a,0x1d,
    0x42,0xed,0x9e,0x6e,0x49,0x3c,0xcd,0x43,0x27,0xd2,0x07,0xd4,0xde,0xc7,0x67,0x18,
    0x89,0xcb,0x30,0x1f,0x8d,0xc6,0x8f,0xaa,0xc8,0x74,0xdc,0xc9,0x5d,0x5c,0x31,0xa4,
    0x70,0x88,0x61,0x2c,0x9f,0x0d,0x2b,0x87,0x50,0x82,0x54,0x64,0x26,0x7d,0x03,0x40,
    0x34,0x4b,0x1c,0x73,0xd1,0xc4,0xfd,0x3b,0xcc,0xfb,0x7f,0xab,0xe6,0x3e,0x5b,0xa5,
    0xad,0x04,0x23,0x9c,0x14,0x51,0x22,0xf0,0x29,0x79,0x71,0x7e,0xff,0x8c,0x0e,0xe2,
    0x0c,0xef,0xbc,0x72,0x75,0x6f,0x37,0xa1,0xec,0xd3,0x8e,0x62,0x8b,0x86,0x10,0xe8,
    0x08,0x77,0x11,0xbe,0x92,0x4f,0x24,0xc5,0x32,0x36,0x9d,0xcf,0xf3,0xa6,0xbb,0xac,
    0x5e,0x6c,0xa9,0x13,0x57,0x25,0xb5,0xe3,0xbd,0xa8,0x3a,0x01,0x05,0x59,0x2a,0x46
};
 
 
/*typedef struct
{
    byte key[10];
} Data;*/
 
void makeKey(byte key[])
{
    for (int i = 0; i < 10; i++)
    {
        key[i] = rand() % 256;
        //cout << key->str[i];
    }
    cout << endl;
}
 
byte G_block(byte key[], int k, int w)
{
    byte g1, g2, g3, g4, g5, g6;
 
    g1 = (w >> 8) & 0xff;
    g2 = w & 0xff;
 
    g3 = fTable[g2 ^ key[(4 * k) % 10]] ^ g1;
    g4 = fTable[g3 ^ key[(4 * k + 1) % 10]] ^ g2;
    g5 = fTable[g4 ^ key[(4 * k + 2) % 10]] ^ g3;
    g6 = fTable[g5 ^ key[(4 * k + 3) % 10]] ^ g4;
 
    return ((g5 << 8) | g6);
}
 
void encrypt(byte key[], byte input[], byte* ciphertext)
{
    int w1, w2, w3, w4;
    int k = 1;
    w1 = (input[0] << 8) | input[1];
    w2 = (input[2] << 8) | input[3];
    w3 = (input[4] << 8) | input[5];
    w4 = (input[6] << 8) | input[7];
 
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            w1 = G_block(key, k, w1) ^ w4 ^ k;
            w2 = G_block(key, k, w1);
            w3 = w2;
            w4 = w3;
            /*temp = w4;
            w3 = w4;
            w2 = G_block(key, k, w1);
            w1 = G_block(key, k, w1) ^ temp ^ k;*/
            k++;
        }
 
        for (int j = 0; j < 8; j++) {
            /*temp = w4;
            w4 = w3;
            w3 = w1 ^ w2 ^ k;
            w2 = G_block(key, k, w1);
            w1 = temp;*/
            w1 = w4;
            w2 = G_block(key, k, w1);
            w3 = w1 ^ w2 & k;
            w4 = w3;
            k++;
        }
    }
    ciphertext[0] = (byte)(w1 >> 8);
    ciphertext[1] = (byte)w1;
    ciphertext[2] = (byte)(w2 >> 8);
    ciphertext[3] = (byte)w2;
    ciphertext[4] = (byte)(w3 >> 8);
    ciphertext[5] = (byte)w3;
    ciphertext[6] = (byte)(w4 >> 8);
    ciphertext[7] = (byte)w4;
 
    //return ciphertext[8];
}
 
int main()
{
    byte input[8] = { 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x31 };
    byte key[10] = {};
    byte* ciphertext = new byte[8];
    byte output[8] = {};
    makeKey(key);
    encrypt(key, input, ciphertext);
    for (int i = 0; i < 8; i++)
    {
        cout << hex << ciphertext[i] << endl;
    }
}
Привет! Дело в том, что в строках 94-101 массив заполняется нолями, хотя значения w1, w2, w3, w4 - нолями не являются. Не могу никак понять, почему это так работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2020, 16:11
Ответы с готовыми решениями:

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно
Здравствуйте! Такая проблема. В файле имена записаны в столбик и разделены точкой с запятой. Массив...

Не заполняется массив
Здравствуйте! Подскажите, пожалуйста, почему при создании нового массива, размерность создается, а...

Не заполняется массив
Здравствуйте, не передается заполненный массив и не понимаю в чем проблема: N = 15 void...

Не заполняется массив
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; int m, n, a, b, c; int mas; int...

2
фрилансер
5846 / 5376 / 1103
Регистрация: 11.10.2019
Сообщений: 14,367
09.06.2020, 18:13 2
---del---

сорри, наврал. Есть там значения, вот скрин
Миниатюры
Массив заполняется нолями  
0
фрилансер
5846 / 5376 / 1103
Регистрация: 11.10.2019
Сообщений: 14,367
09.06.2020, 18:35 3
вот так взлетит
C++
1
        std::cout <<std::setfill('0')<<std::setw(2)<< std::hex<< (uint32_t)ciphertext[i] << std::endl;
0
09.06.2020, 18:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2020, 18:35
Помогаю со студенческими работами здесь

Не заполняется массив
Не заполняет массив mass1. Когда к нему добавляет единицу, все равно оставляет внутри него один...

Массив не заполняется
Не могу понять почему массив не заполняется, при вводе 1 выдает 2, а при вводе 2 и больше выдает 0....

Динамический массив не заполняется
Дан двумерный массив размерностью nxm (n и m задаются с клавиатуры), заполненный целыми случайными...

Массив не заполняется значениями
Проблема: почему программа не запоминает массив b? int main(){ int n=10; for...

Не заполняется массив указателей
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; #include...

Не заполняется динамический массив
Со статическим массивом всё работает как надо,а в динамическом заполняется только первый элемент....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru