spamsink: (Default)
[personal profile] spamsink
Потребовалось мне по делу написать обфускатор (амплуа такое амплуа), пусть и чисто символический, некоего конкретного кода, который не просто заменяет переменные на vNNN, а сохраняет их длину. Ну, я по-быстрому пишу
std::string obfuscate(const std::string & s) {
    static bool init = false;
    static char shuffle[256];
    if (!init) {
        for (int i = 0; i < 256; i++) shuffle[i] = i;
        std::random_shuffle(shuffle + 'a', shuffle + 'z' + 1);
        std::random_shuffle(shuffle + 'A', shuffle + 'Z' + 1);
        init = true;
    }
    std::string ret;
    for (unsigned i = 0; i < s.size(); i++)
        ret += shuffle[(unsigned char)s[i]];
    return ret;
}
Угадайте, что получилось, с моим-то еврейским счастьем.
Hint: Функцию пришлось переписывать.

Date: 2011-08-24 06:51 am (UTC)
From: [identity profile] secondary-tea.livejournal.com
логичнее было бы объявить класс и хранить таблицу в объекте, а инит - в конструкторе, нет?
Page generated Mar. 7th, 2026 11:23 pm
Powered by Dreamwidth Studios