sha1 JS не полный
Я нашёл функцию sha1 на этом сайте, но там нет второго параметра raw_output, как в php, если этот параметр true, то возвращатся должна двоичная строка в 20 символов. ВОт мне такое на js надо. Никто не знает как это реализуется?Может кто-то в инете находил полную функцию? Или придётся использовать ajax?
|
Ну так пройдитесь по возвращаемой строке и каждую пару символов замените на соответствующий символ, считая пару двузначным шестнадцатеричным числом.
Что-то в духе function raw_sha1(msg){ return sha1(msg).match(/\w{2}/g).map(function(a){return String.fromCharCode(a)}).join('') } |
Странная ошибка возникает:
sha1(msg).match(/\w{2}/g).forEach(function (a) {return String.fromCharCode(a);}) is undefined Это из-за чего? |
Возможно, из-за того. что я не тестировал этот код и он больше тянет на псевдокод, чем на рабочую реализацию.
|
Цитата:
|
B@rmaley.e><e, я так понимаю ваш код каждые 2 символа пропускает через String.fromCharCode? Я попробывал сделать в ручную. Пропустил через неё первые 2 символа sha1 вывело Q, а в php выводит Ѓ. Или я не правильно вас понял, или этот метод не подходит(?
|
Kolyaj, Не думаю. Регулярное выражение правильное и должно в этой строке найти. Даже при /\S*/ показывает туже ошибку. А S - это любой символ, кроме пробела. А пробелу там неоткуда взятся.
|
А, тут не forEach нужен, а map.
|
Kolyaj,
Так всё работает, но шифрует не так, как php. А нужно, чтобы было идентично. JS: QW9*9TIR[ PHP: Ѓю‹ю‡Wl>Л"BoЋW„s‚‘zП Я уже и на иностранных сайтах был, там тоже ничего не нашёл( |
В общем ответы все нашёл на прекрасном сайте
http://phpjs.org/ Мне просто нужно было полученную двочную строку через base64 пропустить ещё. И вот там я нашёл функцию b64_sha1() и она идентична php base64_encode(sha1("",1)) |
Часовой пояс GMT +3, время: 06:12. |