Что нового

[_StringEncrypt] Как проверить строку зашифрована ли она

aranea

Новичок
Сообщения
31
Репутация
4
Как проверить строку зашифрована она в RC4 или нет? необходимо ее обработать уже исходя из результата проверки.

Может непонятно выразился, строка либо зашифрована в RC4 либо не зашифрована вообще, то есть ее не надо определять зашифрована она каким-либо другим способом
 
Автор
A

aranea

Новичок
Сообщения
31
Репутация
4
В голову приходит ставить маркер в конец зашифрованной строки, если других средств нет
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Как вариант, проверка на присутствие посторонних знаков
Код:
StringRegExp($sString, '[^A-Z0-9]')

Если true - точно не шифровано.
 
Автор
A

aranea

Новичок
Сообщения
31
Репутация
4
Да, я уже сам пришел к тому же:

Код:
#include <string.au3>
$pass = 123
;$sString = "строка"
$sString = "AB7E300A108B1F0EAA9FBF7E"

$strRE = StringRegExp ($sString, '[A-F0-9]')
If $strRE = 1 Then
   $strEncrypt =_StringEncrypt (0, $sString, $pass)
   MsgBox(4096, "", $strEncrypt) 
Else
   MsgBox(4096, "", "Wrong")
EndIf


А вот по поводу Random я не понял к чему это?


Добавлено:
Сообщение автоматически объединено:

Может у кого есть какие предложения по улучшению этого варианта?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
aranea [?]
А вот по поводу Random я не понял к чему это?
это подпись

Может у кого есть какие предложения по улучшению этого варианта?
такое ощущение, что оно неверно.
есть строка. потом проверяется есть ли в этой строке буквы от A до F и цифры 0 - 9. Если есть шифруем. если нет, говори Wrong. редкий текст или строка не содержат этих элементов. возможно я не правильно понял задачу, но разве это было предложено dwerf?
 
Автор
A

aranea

Новичок
Сообщения
31
Репутация
4
Я имел в виду проверку на шеснадцатиричные числа, если результат положительный то строка расшифровывается если отрицательный то строка принимается как есть. Ну а меседж Wrong просто для отладки

Ну и так у меня прямо беда с пониманием StringRegExp я постоянно не уверен в правильности когда пытаюсь использовать StringRegExp
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
aranea
то есть ты хочешь сказать, что в обычном тексте не могут присутствовать эти символы? потому как твой регвыр вернет истину если надет в анализируемой строке хотя бы одно из вышеуказанного
 
Автор
A

aranea

Новичок
Сообщения
31
Репутация
4
Как раз думаю что могут присутствовать поэтому и спрашиваю может кто чего еще добавит к коду
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
aranea
добавить надо все. ибо то что ты написал не решает поставленную задачу ни на йоту :smile: в сам алгоритм не вникал и думал, что ты просто неправильно понял вариант предложенный выше. но почитав понял, что после криптования на выходе всегда будут лишь 16-ные цифры. поэтому искать в них не alphanumeric бесполезно. то есть, по сути твоя задача не решаема без лишних манипуляций. один из них ты уже озвучил, делать метку в конце или начале строки перед шифрованием и смотреть его наличие при дешифровке
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Вариант не 100%-ый, но вероятность правильного решения достаточно большая:

Код:
#include <string.au3>
$pass = 123
;$sString = "строка"
$sString = "AB7E300A108B1F0EAA9FBF7E"

If StringRegExp ($sString, '^[A-F0-9]+$') Then
   $strEncrypt =_StringEncrypt (0, $sString, $pass)
   MsgBox(4096, "", $strEncrypt) 
Else
   MsgBox(4096, "", "Wrong")
EndIf
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Код:
#include <string.au3>
$sPass = 123

;~ $sString = 'строка'
;~ $sString = 'STRING'
;~ $sString = 'aB7E300A108B1F0EAA9FBF7E'
;~ $sString = 'ADF'
$sString = 'AB7E300A108B1F0EAA9FBF7E'

If StringRegExp($sString, '[^A-F0-9]') Then
   MsgBox(4096, '', 'Wrong')
Else
   $sDecrypted =_StringEncrypt(0, $sString, $sPass)
   MsgBox(4096, '', $sDecrypted)
EndIf


StringRegExp($sString, '[^A-F0-9]') проверяет наличие знаков не указанных в условии.
Если в строке присутствуют знаки не являющиеся 0123456789ABCDEF будет возвращено true.
Если это так, строка гарантированно не была шифрована с помощью _StringEncrypt(), либо её уже ктото успел испортить.


Добавлено:
Сообщение автоматически объединено:

Но естественно нет 100% гарантии что строка была зашифрована, если StringRegExp($sString, '[^A-F0-9]') возвращает false.
 
Автор
A

aranea

Новичок
Сообщения
31
Репутация
4
для моей задачи это решение подходит. всем спасибо
 
Верх