Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   SHA256 (http://www.flasher.ru/forum/showthread.php?t=174595)

wiselord 29.01.2012 04:04

SHA256
 
Нужно взять хеш строки любым алгоритмом. Как это сделать на AS3?

expl 29.01.2012 04:19

В библиотеке as3corelib и SHA256, и другие хеши реализованы.

wiselord 29.01.2012 05:11

Напишите, пожалуйста, код, как их использовать )

Добавлено через 17 минут
Я скачал библиотеку com.hurlant.crypto, распаковал в папку проекта и сделал так
Код AS3:

import com.hurlant.crypto.hash.SHA256;
 
function myHash(s:String):String{
// sha.hash() почему-то, вопреки справочнику as3, принимает только тип ByteArray,
//поэтому создал такую переменную
        var ba:ByteArray = new ByteArray();
        ba.writeUTF(s); // записал в байтовый массив свою строку
        var sha:SHA256 = new SHA256();
// в ту же переменную положил байтовый массив с хешем байтового массива строки )
        ba = sha.hash(ba);
// в цикле считывал по одному байту из байтового массива и добавлял в строку
// 16ричное представление этого байта...
        for (j = 0,s = ""; j < ba.length; j++){
                ba.position = j;
                s += ba.readByte().toString(16);
        }
        return s;
}

В итоге получается строка 16ричных чисел, причем некоторые из них отрицательны...
Как получить SHA256 в традиционном виде, т.е. строкой 16ричных положительных чисел?

-De- 29.01.2012 05:40

Код AS1/AS2:

ba.position = 0;
s = ba.readUTF();

? Вместо цикла.

wiselord 29.01.2012 09:15

Тогда получаются жуткие кракозябры )

Добавлено через 1 минуту
я же в ba кладу хеш...UTF строка считает числа кодами символов, а числа хеша отнюдь не charCode.

wvxvw 29.01.2012 19:42

Ну так алгоритм и не должен строку возвращать... а с чего вы взяли, что там строка, если там число? Соотвественно и хешируют любые данные, а не только строки. Вот только распечатать вашим способом нормально не получится, т.как байты меньше 128 будут представлены одним знаком вместо двух. Либо уже считайте по 4 бита, либо по 4 байта и добавляйте нули по мере надобности, так хоть меньше строк складывать нужно будет.


Часовой пояс GMT +4, время: 02:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.