Я нашёл функцию 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('')
}
Последний раз редактировалось B@rmaley.e><e, 17.08.2011 в 13:56.
Причина: заменил forEach на map
B@rmaley.e><e, я так понимаю ваш код каждые 2 символа пропускает через String.fromCharCode? Я попробывал сделать в ручную. Пропустил через неё первые 2 символа sha1 вывело Q, а в php выводит Ѓ. Или я не правильно вас понял, или этот метод не подходит(?
Kolyaj, Не думаю. Регулярное выражение правильное и должно в этой строке найти. Даже при /\S*/ показывает туже ошибку. А S - это любой символ, кроме пробела. А пробелу там неоткуда взятся.
Kolyaj,
Так всё работает, но шифрует не так, как php. А нужно, чтобы было идентично. JS: QW9*9TIR[ PHP: Ѓю‹ю‡Wl>Л"BoЋW„s‚‘zП
Я уже и на иностранных сайтах был, там тоже ничего не нашёл(
Последний раз редактировалось MCTrane, 17.08.2011 в 12:21.
В общем ответы все нашёл на прекрасном сайте http://phpjs.org/
Мне просто нужно было полученную двочную строку через base64 пропустить ещё. И вот там я нашёл функцию b64_sha1() и она идентична php base64_encode(sha1("",1))