Yam0lod5y, Ага, уже лучше. Значит получается так, строку "data" нужно зашифровать в RC4 с ключом "key", потом результат в base64 и должен получиться "Результат который мне нужен".
Посмотрю, расскажу.
Yam0lod5y, Не понимаю, что вообще приведено в строках "Результат который мне нужен" и "Результат от твоей функции" ? Так в принципе не может выглядеть закодированный в RC4 текст из "Собственно входные данные".
Это похоже на то, что результат кодирования ещё и в какой-нибудь base64 закодировали. Так что ли?
Yam0lod5y, вот посмотрите проект с использованием этой функции с гитхаба: https://www.dropbox.com/s/sc86yrbh2uxgi3c/RC4ciphe...
Там я попытался показать в каком случае может не работать исходная функция и как на мой взгляд должна выглядеть более универсальная функция шифрования.
Ещё раз подчеркну, что результат шифрования, если Вы его попытаетесь куда-то вывести, может содержать "непечатаемые" символы. Поэтому я там для наглядности вывожу шестнадцатеричные значения байт.
Теоретически наверное что-то подобное желаемому создать можно. Но не через создание нового и не через шаблоны. Нужно добавить пункт контекстного меню который будет непосредственно или скорее через запуск скрипта/батника выполнять копирование какой-нибудь образцовой, "шаблонной" папки с содержимым в текущее расположение. Но что именно писать нужно - не подскажу.
Мне бы тупого копировать - вставить хватило :)
Testeroider, тогда похоже в сервис дорога. Ну или на помойку. Не должно оно из-за смены какой-либо настройки так себя вести. Хотя можете погуглить, может что недокументированное и найдёте. Вот как здесь напаример: https://forums.tomshardware.com/threads/2x-gigabyt...
Ну, решили вопрос - и хорошо. Но на всякий случай, замена нулей - это просто бред. Нельзя так делать. Совершенно случайно в выходной последовательности байт у Вас иногда не оказывалось нулевых байт, замен не было, вот и казалось, что функция работает. Так что это было не решение хорошее, а тесты плохие.
Я имел ввиду, какие именно данные Вам нужно шифровать или дешифровать? Сам-то алгоритм здесь в принципе верный. И если Вы уверены, что на вход этой функции будете подавать только однобайтные символы, она будет работать.
Разумеется "ликвидацию нулей" нужно убрать. А дальше понимать, что возвращаемая функцией строка в ряде случаев может восприниматься на просмотре некорректно, т.к. может содержать нулевые байты. Сразу применяйте её по назначению. Что там Вам дальше с зашифрованными данными делать нужно?
Вот если вдруг кто-то заинтересуется и зайдёт в этот вопрос - он же здесь голову сломает, чтобы разобарться где тут что и о чём речь!
Есть код в вопросе, код в комментарии к вопросу, код в "Ответах". Где-то написано "Спасибо, решил", где-то "Рано радовался".
То, что Вы разместили в "Ответах" лучше просто удалить, раз это не решение. Далее нужно причесать вопрос.
- Хорошо бы кратко рассказать о решаемой задаче. Для чего Вы собираетесь применять эту Вашу функцию. (От этого зависит должна ли она быть универсальной или можно чем-то пренебречь)
- Можете оставить js-код если хотите, на самом деле он не очень нужен.
- Разместите тот Delphi код, который будет обсуждаться.
- Описание его тестирования. Что подаёте на вход, что получаете в результате тестирования, чем результат отличается от ожиданий.
- Лишнее уберите или переформулируйте понятнее. Например я совсем не понял к чему тут base64? Она применяется до шифрования, после шифрования или что?
Дополнительный вопрос. Вы не из этого свою функцию делали? https://github.com/daleffe/rc4
Там автор получившиеся в результате шифрования байтики преобразует в текстовое hex-представление. Поэтому и функция у него возвращает строковый результат. А Вы, чтобы получить "красивую" строку пытаетесь выкинуть 0 которые получились не просто так, они нужны - это результат шифрования!
И ещё, его функция не будет работать с юникодными символами.
Функция, непосредственно реализующая шифрование, не должна оперировать с понятиями "Строка", "символ" (если это не однобайтные символы!). Она должна оперировать с массивом байт. На вход подан байтовый массив и на выходе байтовый массив. Результат имеет полное право содержать и нулевые байты. Если нужно, то уже вот этот итоговый массив можно закодировать тем же base64 например.
Sergey Ryzhkin, эти устройства совсем необязательно вставлять в компьютер и питать от компьютерного блока питания. Пожелания по "красивостям" Вы не писали. :) Если нужно максимально просто, тогда Ваше решение по 1 переменному резистору на вентилятор, как описано например здесь: https://habr.com/ru/post/89951/
Питание от любого тычка типа такого https://www.aliexpress.com/item/32722341492.html (12V ну и допустим 1А)
mffgicono, Как видно из текста статьи, даже если "в течение некоторого времени" (даже минута - это тоже некоторое время) по вашей вине был затруднен доступ к некоей информации - это уже состав преступления.
Я вовсе не имею в виду, что декан уже звонит в соответствующий отдел органов, чтобы открыть на Вас дело. Понятно, что никто связываться не захочет. Но право на это он имеет. А то что у сервера вовремя сработала защита - так это аналог того, как если бы на карманной краже Вас поймали за руку.
Так что с такими опытами шутить не стоит. Кто знает, на ком Вам завтра поэкспериментровать захочется, а там могут более сердитые люди оказаться.
Но всё равно не хотелось бы выговор получить по факультету из-за желания исследовать новое
Выговор? Вы ему радоваться должны, так как Вам статья УК полагается!
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
1. Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации, -
наказывается штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев, либо исправительными работами на срок до одного года, либо ограничением свободы на срок до двух лет, либо принудительными работами на срок до двух лет, либо лишением свободы на тот же срок.
Ваш случай:
б) блокирование информации - результат воздействия на компьютерную информацию или технику, последствием которого является невозможность в течение некоторого времени или постоянно осуществлять требуемые операции над компьютерной информацией полностью или в требуемом режиме, то есть совершение действий, приводящих к ограничению или закрытию доступа к компьютерному оборудованию и находящимся на нем ресурсам, целенаправленное затруднение доступа законных пользователей к компьютерной информации, не связанное с ее уничтожением;
@ _ @, я написал, в каком случае циклов будет меньше. Уточните у преподавателя, как нужно понимать условие задачи. Это не вопрос оптимизации, это вопрос постановки задачи. Для случая, как Вы поняли задачу, нужны все 3 цикла, в какой-то другой интерпретации может и не 3.
Ну или используйте предложенный Константин Цветков "ход конём" :))
И освойте математические функции имеющиеся в Delphi, код станет гораздо читабельнее: https://docwiki.embarcadero.com/RADStudio/Sydney/e...
alena11111, При малом объёме оперативки тормоза наступают из-за того, что то, что "не влезает" то и дело скидывается в так называемый "своп" - специальный файл на диске. Дополнительная память эту проблему облегчит. Но всё равно и сама Windows и прикладные программы с диском активно работают. Сами программы запускаться быстрее будут, рабочие файлы/документы быстрее читаться/записываться, в процессе работы программ временных файлов много создаётся. Вот и получается, что более быстрый диск будет заметным подспорьем.
alena11111, тут уж только Вам решать - вкладываться в этот или копить на новый. Я про ssd написл просто к тому, что следующим "бутылочным горлышком" скорее всего диск станет, а уж только потом процессор.
Армянское Радио, Если я не путаю, то у разъёмов питания ЦП со стороны защёлки 12V с другой земля. А у разъемов для питания видеокарт - наоборот, где защёлка, там ряд земли. Молекс на 6 пин - он скорее для видюх, т.е. второй вариант, а его затолкали в материнку. Коротыш по 12V устроен был.
Посмотрю, расскажу.