Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kami Boleh Mengelirukan Rentetan yang Terbenam dalam Binari Boleh Laksana dengan Berkesan?
Mengeburkan rentetan yang dibenamkan dalam binari boleh laku adalah berharga untuk melindungi maklumat sensitif seperti kunci capaian yang disulitkan daripada tanpa kebenaran. Walau bagaimanapun, kaedah mudah seperti menyimpan rentetan dalam tatasusunan aksara boleh mendedahkan kandungannya dengan mudah semasa analisis.
Untuk menyembunyikan rentetan secara berkesan dalam binari yang disusun, pendekatan yang lebih canggih boleh digunakan. Pertimbangkan contoh berikut:
#include "HideString.h" DEFINE_HIDDEN_STRING(EncryptionKey, 0x7f, ('M')('y')(' ')('s')('t')('r')('o')('n')('g')(' ')('e')('n')('c')('r')('y')('p')('t')('i')('o')('n')(' ')('k')('e')('y')) DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t')) int main() { std::cout << GetEncryptionKey() << std::endl; std::cout << GetEncryptionKey2() << std::endl; return 0; }
Kod ini menggabungkan makro tersuai, "DEFINE_HIDDEN_STRING," untuk menyulitkan rentetan yang diberikan. Makro mengekod setiap aksara menggunakan kunci unik yang diperoleh daripada nilai benih yang disediakan (cth., "Kunci penyulitan kuat saya" -> 0x7f). Algoritma penyulitan berdasarkan benih digunakan pada jujukan aksara, menjadikan data yang terhasil kelihatan rawak dan sukar untuk dikenal pasti dalam binari yang disusun.
#define CRYPT_MACRO(r, d, i, elem) (elem ^ (d - i))
#define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ) \ static const char* BOOST_PP_CAT(Get, NAME)() \ { \ static char data[] = { \ BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)), \ '' \ }; \ static bool isEncrypted = true; \ if (isEncrypted) \ { \ for (unsigned i = 0; i < (sizeof(data) / sizeof(data[0])) - 1; ++i) \ { \ data[i] = CRYPT_MACRO(_, SEED, i, data[i]); \ } \ isEncrypted = false; \ } \ return data; \ }
Pendekatan ini secara berkesan mengaburkan rentetan terbenam dalam kod binari, menjadikannya sukar untuk diekstrak tanpa pengetahuan tentang kunci penyulitan dan algoritma. Ia mencapai keseimbangan antara keselamatan dan kemudahan penggunaan, menawarkan kaedah yang mudah untuk melindungi maklumat sensitif.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengelirukan Rentetan yang Terbenam dalam Binari Boleh Laksana dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!