-
Notifications
You must be signed in to change notification settings - Fork 16
SHA
Алгоритм генерирует криптографический хэш ( «дайджест» )
Этот хэш является своего рода «сигнатурой» для текста или файла данных
Алгоритм SHA не является «шифрованием»
это «односторонняя» криптографическая функция
она возвращает цифровую подпись фиксированного размера для любого размера исходного текста
Создан Агентством национальной безопасности США
- SHA-0 - в 1993 году
- SHA-1 - в 1995 году
- SHA-2 - в 2002 году
является частью стандарта цифровой подписи ( DSS )
генерирует почти уникальную 160-битную ( 20-байтную ) подпись для текста
☕ Например, для исходного текста:
for ( var x of arr ) {
console.log ( x )
}криптографический хэш SHA-1 будет:
15E84BC669EC1F264F68CF0329A3DE12788EBC7D
а SHA-2 ( SHA256 ):
B731057D4688C1BCE4E6D7213027AA5F9E30939456B222E4FFF74FA0CD399D4F
git широко использует хэши SHA-1 в качестве идентификаторов и проверок согласованности
| 🔗SHA1 | 🔗 SHA2 |
|---|
Вы можете установить пакет js-sha1 из CDN
$ npm install js-sha1
|
Вы можете подключить скрипт sha256 к своей странице:
<script src="https://cdn.rawgit.com/chrisveness/crypto/4e93a4d/sha256.js"></script>и использовать функцию Sha256.hash() для динамической генерации дайджеста любого текста
var hash = Sha256.hash ( text )| ☕ 1️⃣ |
|---|
Кроме того, в
Bush вы можете использовать консольную команду sha256sum
Откройте пустое окно ( blank )
В этом окне откройте Chrome DevTools
Создайте фрагмент кода ( snippet ), как показано на видео ![]()
Вставьте следующий код сниппета:
let script = document.createElement( 'script' )
script.src = 'https://garevna.github.io/js-samples/js/testSHA384.js'
script.crossOrigin = 'anonymous';
script.integrity = 'sha384-yXrIdlO1CBJknfDtCtDe2tmWWNl5xK30aTz62nLkEpEIBRD3OGi7+To7hfKRaUZ/'
document.head.appendChild( script )Subresource Integrity ( SRI ) - это функция безопасности, которая позволяет браузерам проверять файлы, загружаемые из внешних источников ( например, из CDN )
Если файл был изменен, то значение атрибута integrity ( цифровой подписи файла ) не будет соответствовать новому значению, вычисленному браузером, и загрузка поврежденного файла не произойдет
Для генерации дайджестов файлов используйте 🔗 сервис
- Вставьте ссылку на файл в сети
- Нажмите кнопку
Hash! - Полученный тег скрипта содержит атрибут
integrity - Скопируйте значение атрибута
integrity - Теперь вы сможете использовать его при динамической загрузке скриптов
Посмотрите код ☕ примера в отладчике
Установите breakpoints
С помощью Watch отслеживайте, как изменяются значения массива users и переменной user
- Создайте форму регистрации пользователя
- Создайте страницу для зарегистрированных пользователей
При регистрации пользователя должен генерироваться дайджест, который будет ключом записи в базе данных
users = [
{
key: a42caea01469a4687fb8713dc1748a0d14adec7f307371f82382812142ee2c58,
name: "Иван",
email: "ivan.petrenko@gmail.com",
avatar: "https://imgur.com/I80W1Q0.png"
},
{
key: b7d20c2dc6cb3e4bcde90f80598e369ab3d1841d799039dfd06f86221af10fd8,
name: "Mary",
email: "mary789@gmail.com",
avatar: "https://raw.githubusercontent.com/fangpenlin/avataaars/HEAD/avataaars-example.png"
},
...
]Создайте форму для входа пользователя
После ввода email нужно найти пользователя с таким email и запросить пароль
После ввода пароля должен быть сгенерирован дайджест, который будет проверяться на совпадение со значением key найденного пользователя
Если значения не совпадут, нужно вывести предупреждение
Если значения совпали, то перейти на страницу для зарегистрированных пользователей
На странице для зарегистрированных пользователей должно быть выведено имя пользователя и его аватар
© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 |
| ⏬ |
|---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Приведение типов
- NaN | null | Infinity
- BigInt (ES10)
- Функции
- Методы
- Методы строк
- Методы массивов
- Date ()
Самостоятельная работа
Практика (XSS)
Homework
- Циклы while и do...while
- Циклы for...of и for...in
- Параметры по умолчанию
- Объект function
Практика
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- Размеры и прокрутка элемента
- Event Loop
- async | await
- API
- REST | HATEOAS
- status codes
JSON placeholder-
JSON server
fake chat
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- :not(:defined)
- Shadow DOM
- Custom elements
- Lifecycle hooks
- whenDefined
- <template>
- slot
1
2
3
Homework
- npm
- webpack
Упражнение 1- ES6 модули
Упражнение 2- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
| ⏫ |
|---|

Дополнительно
Справочная инфо
Git Bush
TCP/IP
Коды символов