cari

Rumah  >  Soal Jawab  >  teks badan

Kebolehoperasian MySql dan Java dalam penyulitan/penyahsulitan AES 256

Penyulitan dan penyahsulitan berikut berfungsi seperti biasa dalam mod mysql (aes-256-cbc)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

SET block_encryption_mode = 'aes-256-cbc';

 

select

cast(

aes_decrypt(

from_base64('StThdNXA+CWvlg+of/heJQ=='),

sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256),

'ssshhhhhhhhhhh!!'

)

as char);

 

select to_base64(aes_encrypt(

'test_value',

sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256),

'ssshhhhhhhhhhh!!'

));

Saya cuba menyahsulit nilai yang disulitkan dalam mysql tanpa berjaya.

Berikut ialah kunci dalam pertanyaan mysql saya sha256 (garam+kunci)

1

select sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256);

Nilai yang sama seperti yang saya dapat di java:

1

Hashing.sha256().hashString("ssshhhhhhhhhhh!!ENCRYPTION_KEY$&", StandardCharsets.UTF_8).toString();

Adakah terdapat cara tersuai untuk menjadikan istana melenting/API lain menggunakan kunci yang sama untuk penyahsulitan?

P粉937769356P粉937769356349 hari yang lalu526

membalas semua(1)saya akan balas

  • P粉239089443

    P粉2390894432024-03-28 20:33:42

    MySQL menggunakan algoritma OpenSSL secara dalaman, menggunakan EVP_BytesToKey sebagai fungsi terbitan. Lihat laman web ini

    Contoh penyulitan dan penyahsulitan MySQL:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    SET block_encryption_mode = 'aes-128-cbc';

    SET block_encryption_mode = 'aes-256-cbc';

    select

    cast(

        aes_decrypt(

            from_base64('MKicK+vAcZkq/g3wpTKxVg=='),

            'ENCRYPTION_KEY$&',

            'ssshhhhhhhhhhh!!'

        )

    as char);

     

     

    select to_base64(aes_encrypt(

    'test_value',

    'ENCRYPTION_KEY$&',

    'ssshhhhhhhhhhh!!'

    ));

    Terdapat JAR yang menyokong fungsi terbitan kunci EVP_BytesToKey ini.

    1

    JAR : not-going-to-be-commons-ssl-0.3.19

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    byte[] key = "ENCRYPTION_KEY$&".getBytes(StandardCharsets.UTF_8);

    byte[] iv = "ssshhhhhhhhhhh!!".getBytes(StandardCharsets.UTF_8);

     

    String cipher = "AES-128-CBC";

     

    @Test

    public void testEncrypt() throws Exception {

        byte[] data = "test_message".getBytes(StandardCharsets.UTF_8);

        byte[] encrypted = OpenSSL.encrypt(cipher, key, iv, data, true);

        System.out.println(new String(encrypted));

    }

     

    @Test

    public void testDecrypt() throws GeneralSecurityException, IOException {

        byte[] encrypted = "rQ8Y0ClNu5d4ODZQ3XcQtw==".getBytes(StandardCharsets.UTF_8);

        byte[] decrypted = OpenSSL.decrypt(cipher, key, iv, encrypted);

        System.out.println(new String(decrypted));

    }

    }

    Kesalingoperasian cara ini akhirnya tercapai! Harap ini membantu seseorang yang cuba melakukan perkara yang sama.

    balas
    0
  • Batalbalas