Xpoint
   [напомнить пароль]

Не равны одинаковые строки

Метки: [без меток]
2014-07-11 15:08:29 [обр] Легеров Алексей[досье]
сообщение промодерировано

Столкнулся со странной проблемой. Одинаковые строки не равны с точки зрения Perl.
Суть: получаю подпись от платежной формы - это md5_hex-строка в base64. Генерирую ее же в скрипте и просто сравниваю.
Визуально одинаковые строки не проходят проверку if($sign eq $signencoded){}
Почему

'Zjk5NTY0NDExMGI3NTgxNTZhNGYxYzI4YmEwOGZjNTk=' ne
'Zjk5NTY0NDExMGI3NTgxNTZhNGYxYzI4YmEwOGZjNTk='

?

спустя 36 минут [обр] Евгений Седов aka KPbIC(38/176)[досье]
сообщение промодерировано
А если сравнить посимвольно?
спустя 8 минут [обр] nonSmoker(0/6)[досье]
bash-4.2$ perl -le ' print 1 if q[Zjk5NTY0NDExMGI3NTgxNTZhNGYxYzI4YmEwOGZjNTk=] eq q[Zjk5NTY0NDExMGI3NTgxNTZhNGYxYzI4YmEwOGZjNTk=]'
1
Ошибка в вашем коде. Показывайте.
спустя 14 минут [обр] Легеров Алексей[досье]
Да, Евгений Седов aka KPbIC[досье], спасибо. Получается, что encode_base64() добавляет в строку какой-то концевой символ. chomp() помог.
спустя 19 минут [обр] nonSmoker(0/6)[досье]
encode_base64 - там есть второй параметр, по умолчанию он "\n", можно не делать chomp(),а передать пустую строку. $str = encode_base64($hash, "");
спустя 8 минут [обр] Легеров Алексей[досье]
Да, nonSmoker[досье], точно, подробно perldoc не прочел. Спасибо!
Powered by POEM™ Engine Copyright © 2002-2005