как сравнить строки в прочности?

pragma solidity ^0.4.11;
contract test2 
{

    address creater;
    string username;
    string password;

    function testusernamepassword(string username,string password) returns (bool) 
    {
        if (username == "deepak" && password == "123") //error: operator == is not compatible with string ?
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
8 голосов | спросил Deepak Baberwal 16 42017vEurope/Moscow11bEurope/MoscowThu, 16 Nov 2017 15:08:11 +0300 2017, 15:08:11

2 ответа


16

Вы можете сравнить строки следующим образом:

function compareStrings (string a, string b) view returns (bool){
       return keccak256(a) == keccak256(b);
   }

В качестве побочного примечания: он абсолютно не защищен паролями и именами пользователей в Solidity.

ответил pabloruiz55 16 42017vEurope/Moscow11bEurope/MoscowThu, 16 Nov 2017 15:34:28 +0300 2017, 15:34:28
1

Несомненно, вы не можете сравнивать строки непосредственно в прочности; поэтому вам нужно определить функцию для этой конкретной цели. Ответ, данный pabloruiz55 , является очень хорошим решением, он сравнивает хэши 2 строки , которые, очевидно, должны обеспечивать тот же результат в случае двух одинаковых строк (помните: хеш-коллизии возможны.)

  

Hash Collision : ситуация, когда два или более входа хеш-функции создают идентичный вывод.

ответил Riccardo Persiani 26 PMpThu, 26 Apr 2018 13:24:35 +030024Thursday 2018, 13:24:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132