Принципиальная разница между алгоритмами хеширования и шифрования

Взято из этого учебника с исправлениями, сделанными благодаря верхнему комментарию:

function getMousePos( canvas, evt ) {
    var rect = canvas.getBoundingClientRect();
    return {
        x: Math.floor( ( evt.clientX - rect.left ) / ( rect.right - rect.left ) * canvas.width ),
        y: Math.floor( ( evt.clientY - rect.top ) / ( rect.bottom - rect.top ) * canvas.height )
    };
}

Используется на холсте следующим образом:

var canvas = document.getElementById( 'myCanvas' );
canvas.addEventListener( 'mousemove', function( evt ) {
    var mousePos = getMousePos( canvas, evt );
} );

484
задан Community 23 May 2017 в 12:18
поделиться

4 ответа

Хеш-функцию можно считать такой же, как выпекание буханки хлеба. Вы начинаете с входных данных (мука, вода, дрожжи и т. Д.), А после применения хеш-функции (смешивание + выпечка) вы получаете результат: буханка хлеба.

Идти по другому пути чрезвычайно сложно - вы не можете разделить хлеб обратно на муку, воду, дрожжи - часть этого была потеряна в процессе выпечки, и вы никогда не сможете точно сказать, сколько воды, муки или дрожжей был использован для конкретной буханки, потому что эта информация была уничтожена функцией хеширования (он же печь).

Многие различные варианты входов теоретически дают одинаковые буханки (например, 2 чашки воды и 1 цбп дрожжей дают точно такую ​​же буханку, что и 2,1 стакана воды и 0,9 ц / б дрожжей), но с учетом одного из этих буханок вы можете не скажи точно, какое сочетание входов произвело его.

Шифрование, с другой стороны, можно рассматривать как сейф. Все, что вы положили туда, возвращается, пока у вас есть ключ, с помощью которого он был заперт в первую очередь. Это симметричная операция. При наличии ключа и некоторого ввода вы получите определенный вывод. Учитывая этот вывод и тот же ключ, вы получите исходный ввод. Это отображение 1: 1.

156
ответ дан Marc B 23 May 2017 в 12:18
поделиться
  1. Используйте хэши, когда вам нужно идти только одним путем. Например, для паролей в системе вы используете хеширование, потому что вы всегда будете проверять, чтобы значение, введенное пользователем после хеширования, соответствовало значению в вашем хранилище. С шифрованием вы можете пойти двумя путями.

  2. алгоритмы хеширования и алгоритмы шифрования являются всего лишь математическими алгоритмами. Так что в этом отношении они ничем не отличаются - это всего лишь математические формулы. Однако в отношении семантики существует очень большое различие между хешированием (односторонним) и шифрованием (двусторонним). Почему хеши необратимы? Потому что они разработаны таким образом, потому что иногда вы хотите одностороннюю операцию.

4
ответ дан hvgotcodes 23 May 2017 в 12:18
поделиться

Базовый обзор методов хеширования и шифрования / дешифрования.

Хеширование:

Если вы хешировали любой простой текст , то вы не можете получить тот же простой текст из хешированного текста . Проще говоря, это односторонний процесс.

hashing


Шифрование и дешифрование:

Если вы шифруете любой простой текст снова с помощью ключа вы можете получить тот же обычный текст , выполнив дешифрование для зашифрованного текста с тем же (симметричным) / разностным (асимметричным) ключом.

encryption and decryption


ОБНОВЛЕНИЕ: Для решения вопросов, упомянутых в отредактированном вопросе.

1. Когда использовать хеши против шифрования

Хеширование полезно, если вы хотите отправить кому-нибудь файл. Но вы боитесь, что кто-то еще может перехватить файл и изменить его. Таким образом, способ, которым получатель может убедиться, что это правильный файл, - это если вы публикуете значение хеша публично. Таким образом, получатель может вычислить хеш-значение полученного файла и проверить, соответствует ли оно хеш-значению.

Шифрование хорошо, если вы говорите, что хотите отправить кому-то сообщение. Вы шифруете сообщение ключом, а получатель дешифрует тем же (или, возможно, даже другим) ключом, чтобы вернуть исходное сообщение. кредитов

<час>

2. Что отличает алгоритм хеширования или шифрования (от теоретического / математического уровня), то есть то, что делает хеши необратимыми (без помощи радужного дерева)

В основном хеширование - это операция, которая теряет информацию, но не шифрует . Давайте посмотрим на разницу простым математическим способом для нашего легкого понимания , конечно, у обоих гораздо более сложная математическая операция с повторениями, включенными в нее

Шифрование / дешифрование (обратимое):

Сложение :

4 + 3 = 7  

Это можно изменить, взяв сумму и вычтя одно из добавлений

7 - 3 = 4     

Умножение :

4 * 5 = 20  

Это можно изменить, взяв произведение и разделив на один из факторов

20 / 4 = 5    

Итак, здесь мы можем предположить, что одно из добавлений / факторов ключ дешифрования и результат (7,20) - это зашифрованный текст.


Хеширование (необратимое):

деление по модулю :

22 % 7 = 1   

Это нельзя отменить, поскольку вы не можете выполнить ни одной операции к частному и дивиденду, чтобы восстановить делитель (или наоборот).

Можете ли вы найти операцию для заполнения, где '?' является?

1  ?  7 = 22  
1  ?  22 = 7

Таким образом, хеш-функции имеют то же математическое качество, что и деление по модулю, и теряют информацию.

кредитов

36
ответ дан mrsrinivas 23 May 2017 в 12:18
поделиться
Уитфилд Диффи и Мартин Хеллман впервые опубликовали концепцию асимметричного шифрования, и алгоритм был известен как обмен ключами Диффи-Хеллмана . Затем в 1978 году Рон Ривест, Ади Шамир и Леонард Адлеман из MIT опубликовали алгоритм RSA . Их можно рассматривать как основу асимметричной криптографии.

По сравнению с симметричным шифрованием, в Асимметричное шифрование будет два ключа вместо одного. Один называется Открытый ключ , а другой - Закрытый ключ . Теоретически, во время инициализации мы можем сгенерировать пару ключей Public-Private для нашей машины. Закрытый ключ должен храниться в безопасном месте и никогда не должен передаваться никому. Открытый ключ, как видно из названия, может быть предоставлен любому, кто хочет отправить вам зашифрованный текст. Теперь те, у кого есть ваш открытый ключ, могут шифровать секретные данные с его помощью. Если пара ключей была сгенерирована с использованием алгоритма RSA, тогда они должны использовать тот же алгоритм при шифровании данных. Обычно алгоритм будет указан в открытом ключе. Зашифрованные данные могут быть расшифрованы только с помощью закрытого ключа, который принадлежит вам.

Источник: SSL / TLS для чайников, часть 1: Ciphersuite, Hashing, Encryption | WST ( https://www.wst.space/ssl-part1-ciphersuite-hashing-encryption/ )

-3
ответ дан Anonymous Platypus 23 May 2017 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: