Повторно реализуйте хеширование членства и пароля пользователя ASP.NET в Ruby

Вы неправильно фиксируете this, обозначение стрелки не может использовать неявную ссылку this, избегайте использования с JQuery:

. Выражение функции стрелки имеет более короткий синтаксис чем выражение функции и не имеет своих собственных this, arguments, super или new.target. Эти функциональные выражения лучше всего подходят для не-методических функций и не могут использоваться в качестве конструкторов.

Я переработал ваш код, чтобы он мог работать так, как вы ожидаете:

$("i").click(function()
{
    changeColor($(this));
});

const changeColor = (obj) =>
{
    if (!obj.hasClass('clicked'))
        console.log('not clicked class');
}
.clicked {
   color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<i class="fas fa-star fa-lg clicked">Button 1</i>

<i class="fas fa-star fa-lg">Button 2</i>

<i class="fas fa-star fa-lg">Button 3</i>

8
задан arfon 9 February 2009 в 22:52
поделиться

3 ответа

Просто быстрое обновление, мой коллега решил это:

require "base64"
require "digest"
require "jcode"


def encode_password(password, salt)
 bytes = ""
 password.each_char { |c| bytes += c + "\x00" }
 salty = Base64.decode64(salt)
 concat = salty+bytes
 sha1 = Digest::SHA1.digest(concat)
 encoded = Base64.encode64(sha1).strip()
 puts encoded
end
8
ответ дан 5 December 2019 в 12:13
поделиться

Вы достаточно близки. К сожалению, Ruby не имеет никакой встроенной поддержки unicode в данный момент, и Ваша хеш-функция полагается на него. Существуют обходные решения. Осмотрите сайт о том, как сделать unicode в Ruby. BTW, я думаю, что Вы забыли к base64, декодируют соль, похоже, что функция ASP.net делает это.

2
ответ дан 5 December 2019 в 12:13
поделиться

Необходимо не закодировать соль для преобразования его назад в, он - представление байта, и затем свяжите это с паролем для получения хешированного значения пароля. Вы используете строку соли кодирования непосредственно (который является другой солью), и таким образом она хеширует к чему-то другому.

require "base64"
require "digest/sha1"
password = "password"
salt = Base64.decode64("1ptFxHq7ALe7yXIQDdzQ9Q==")
concat = salt+password
sha1 = Digest::SHA1.digest(concat)
encoded = Base64.encode64(sha1)
puts encoded
1
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

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