Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RESEARCH] Результат в переменную #1

Closed
sergeevabc opened this issue Oct 15, 2014 · 6 comments
Closed

[RESEARCH] Результат в переменную #1

sergeevabc opened this issue Oct 15, 2014 · 6 comments
Labels

Comments

@sergeevabc
Copy link

Дмитрий, я прям теряюсь при знакомстве с вашими инструментами. :)
Сейчас вот гадал, чего это Scrypt не работает.

var result = scrypt(masterkey, salt, cost, blocksize, dklen, step, null, "hex");
object is not a function

var result = scrypt(masterkey, salt, cost, blocksize, dklen, step, function(){}, "hex");
undefined

scrypt(masterkey, salt, cost, blocksize, dklen, step, function(res){document.getElementById("result").value = res;}, "hex");
ура, получилось

Главный вопрос: можно ли допилить scrypt, чтобы привычно получать результат в переменную?
Или, может быть, я придерживаюсь устаревшей практики, тогда подскажите, как грамотнее.

Второстепенный: если вместо hex указать null, то приходят числа через запятую, примерно так 223,167,126,190,189,229,104,254,42,238,248,65,167,36,135,41,113,133,212,189,192,108,199,187,160,239,56,7,100,124,89,143, а что это? Ожидал неразберихи, которую можно сконвертировать по своему вкусу, необязательно в hex или base64 (например, в base85 zeromq, где спецсимволов больше или в base32/58, где спецсимволы отсутствуют).

P.S. Приятно, что сюда вы включили перевод строки в UTF8, т.е. masterkey, salt пишу без обёртки.

@dchest
Copy link
Owner

dchest commented Oct 15, 2014

Как и все асинхронное в JavaScript, нужно писать продолжение кода в коллбеке:

scrypt(masterkey, salt, N, r, dkLen, step, function(result) {

    // тут дальнейшие манипуляции с result и остальной код.

}, "hex");

Если null, выдаст Array с байтами.

@sergeevabc
Copy link
Author

Как я понимаю, здешний коллбек относится к тому, что делать после подсчёта результата.
А возможен коллбек о статусе операции? См. у Amandam, OneShallPass и Triplesec. Так нагляднее.

@dchest
Copy link
Owner

dchest commented Oct 15, 2014

Да, именно. Согласен насчет статуса.

@dchest
Copy link
Owner

dchest commented Oct 15, 2014

Добавил issue — #2

@dchest dchest closed this as completed Oct 15, 2014
@sergeevabc
Copy link
Author

Дмитрий, продолжаю по второстепенному вопросу о формате вывода. Сравним:
var result = sha256.pbkdf2(password, salt, 150000, 32); даёт [object Uint8Array]
scrypt(password, salt, 15, 8, 32, 200, function(result) {...}, null); даёт 181,253,53,216,124…
Почему так? Может быть, лучше то и другое привести к одному?

@dchest
Copy link
Owner

dchest commented Oct 16, 2014

scrypt-async-js совместим со старыми браузерами, поэтому не может использовать Uint8Array. Можете сделать var resultBytes = new Uint8Array(result).

@sergeevabc sergeevabc changed the title Результат в переменную [RESEARCH] Результат в переменную Dec 16, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants