Что нового

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

aranea

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

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

aranea

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

dwerf

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

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

aranea

Новичок
Сообщения
27
Репутация
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
Репутация
622
aranea [?]
А вот по поводу Random я не понял к чему это?
это подпись

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

aranea

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

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

kaster

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

aranea

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

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
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
Репутация
218
Код:
#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

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