0 / 0 / 1
Регистрация: 24.12.2015
Сообщений: 103
1

AES 256 CBC Decode

17.02.2020, 08:13. Показов 2655. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста, каким образом можно дешифровать запрос, зная, что тип шифрования AES256 CBC, есть ключ, из массива байтов. То, что нашёл не подходит, вылазит следующая ошибка
Кликните здесь для просмотра всего текста
System.Security.Cryptography.CryptographicException: "Недопустимая длина данных для дешифрования."

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
public static string DecryptDataAES(byte[] cipherText, byte[] key)
        {
            string plaintext = null;
            byte[] iv = { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                                                        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                                                        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                                                        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };
 
            using (Rijndael rijAlg = Rijndael.Create())
            {
                rijAlg.Key = key;
                rijAlg.IV = iv;
 
                ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
 
                // Create the streams used for decryption. 
                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {
                            plaintext = srDecrypt.ReadToEnd();
                        }
                    }
                }
 
            }
 
            return plaintext;
        }
Вот так выглядит зашифрованный текст
AES 256 CBC Decode
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2020, 08:13
Ответы с готовыми решениями:

Шифрование AES-256 GCM
Как на C# можно сделать шифрование AES-256 GCM, без библиотек, хоть что можете предложить WinAPI и...

Нужен полный код алгоритма шифрования AES 256
Собсна, сабж. Знаю, что оно делается в несколько строк, но именно это мне и не надо. Надо БЕЗ...

Шифрование AES 256
Доброго времени суток, помогите реализовать шифрование сам код шифрование public static...

OpenSSL ошибка bad magic number при расшифровке AES-256-CBC
У меня есть файл file.bin с вот таким содержимым: —рSu©€њqCQb8?x¶8чm...

2
Эксперт .NET
17205 / 12659 / 3321
Регистрация: 17.09.2011
Сообщений: 20,934
17.02.2020, 12:37 2
DmitryVL, покажите код получения зашифрованного текста и место вызова DecryptDataAES.
При шифровании исходного текста вектор инициализации был по нулям?
Ну и у вас используется AES128, а не 256.
0
0 / 0 / 1
Регистрация: 24.12.2015
Сообщений: 103
18.02.2020, 11:33  [ТС] 3
У меня имеется функция, которая прописана в исходниках приложения
Java
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
abstract class Encryptor {
    private final SecureRandom a = new SecureRandom();
    private int b;
    private SecretKey c;
 
    /* access modifiers changed from: 0000 */
    public abstract boolean a();
 
    Encryptor() {
    }
 
    /* access modifiers changed from: 0000 */
    public void a(SecretKey secretKey) {
        this.b = 16;
        this.c = secretKey;
    }
 
    private void b() throws GeneralSecurityException {
        if (this.c == null) {
            StringBuilder sb = new StringBuilder();
            sb.append(getClass().getSimpleName());
            sb.append(" did not initialize properly, check that the encryption key is correctly configured");
            throw new GeneralSecurityException(sb.toString());
        }
    }
 
    public byte[] a(byte[] bArr) throws GeneralSecurityException {
        b();
        byte[] bArr2 = new byte[this.b];
        this.a.nextBytes(bArr2);
        Cipher instance = Cipher.getInstance("AES/CBC/PKCS7Padding");
        instance.init(1, this.c, new IvParameterSpec(bArr2));
        byte[] doFinal = instance.doFinal(bArr);
        long j = 256;
        int i = 1;
        while (((long) bArr.length) >= j) {
            j *= 256;
            i++;
        }
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try {
            DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
            dataOutputStream.write(bArr2);
            dataOutputStream.writeByte(i);
            byte[] bArr3 = new byte[i];
            byte[] array = ByteBuffer.allocate(8).order(ByteOrder.BIG_ENDIAN).putLong((long) bArr.length).order(ByteOrder.LITTLE_ENDIAN).array();
            for (int i2 = 0; i2 < i; i2++) {
                bArr3[i2] = array[(array.length - 1) - i2];
            }
            dataOutputStream.write(bArr3);
            dataOutputStream.write(doFinal);
            byte[] byteArray = byteArrayOutputStream.toByteArray();
            if (a()) {
                a(byteArray, 4);
            }
            try {
                byteArrayOutputStream.close();
            } catch (IOException e) {
                Logger.a(getClass().getSimpleName(), (Throwable) e);
            }
            return byteArray;
        } catch (IOException e2) {
            throw new GeneralSecurityException(e2.getCause());
        } catch (Throwable th) {
            try {
                byteArrayOutputStream.close();
            } catch (IOException e3) {
                Logger.a(getClass().getSimpleName(), (Throwable) e3);
            }
            throw th;
        }
    }
 
    private void a(byte[] bArr, int i) {
        for (int i2 = i; i2 < bArr.length - 8; i2++) {
            bArr[i2] = (byte) (bArr[i2] ^ bArr[i2 % i]);
        }
    }
 
    public byte[] b(byte[] bArr) throws GeneralSecurityException {
        if (bArr.length < this.b + 1) {
            return null;
        }
        b();
        if (a()) {
            a(bArr, 4);
        }
        int i = this.b;
        int i2 = i + 1;
        byte b2 = bArr[i];
        int i3 = i2;
        int i4 = 0;
        while (i4 < b2) {
            int i5 = i3 + 1;
            byte b3 = bArr[i3];
            i4++;
            i3 = i5;
        }
        Cipher instance = Cipher.getInstance("AES/CBC/PKCS7Padding");
        instance.init(2, this.c, new IvParameterSpec(bArr, 0, this.b));
        return instance.doFinal(bArr, i3, bArr.length - i3);
    }
}
 
class HttpKey {
    static final byte[] a = {-56, 33, 18, 2, 17, -50, -88, -117, -14, -10, -106, 23, -77, -39, -23, -2};
}
 
    private HttpEncryptor() {
        a((SecretKey) new SecretKeySpec(HttpKey.a, "AES"));
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2020, 11:33
Помогаю со студенческими работами здесь

Aes 128 cbc неполная расшифровка
пишу тест имплементацию int main(int argc, char* argv) { HCRYPTPROV hProv; HCRYPTKEY hKey;...

несоответствие данных aes cbc wincrypt
вот код: #include &lt;windows.h&gt; #include &lt;wincrypt.h&gt; #include &lt;string&gt; #define...

AES 192 и AES 256
Добрый день! Возможно ли в Java сделать шифрование с помощью AES 256- или 192-битными ключами?...

Шифровальщик AES-256
День добрый. Ночью умудрился схватить шифровальщик. К логам прилагаю файл Notice.txt с ключом и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru