Каково различие между шифрованием и входящим в систему асимметричным шифрованием?

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

db.getCollection('myCollection').find({

    "$where" : function(){

        var searchKey = 'find-this';
        var searchValue = 'please find me';

        return searchInObj(obj);

        function searchInObj(obj){                            
          for(var k in obj){       
            if(typeof obj[k] == 'object' && obj[k] !== null){
              if(searchInObj(obj[k])){
                return true;
              }
            } else {
              if(k == searchKey && obj[k] == searchValue){
                return true;
              }
            }          
          }                         
          return false;
        }       
    }    
})
251
задан mmcdole 17 January 2009 в 22:15
поделиться

8 ответов

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

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

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

я хочу, чтобы мой открытый ключ использовался для чтения сообщений, и я не забочусь, кто читает их

, Это подписание , это сделано с закрытым ключом.

я хочу быть в состоянии зашифровать определенную информацию и использовать ее в качестве ключа продукта для моего программного обеспечения.

я только забочусь, что я - единственный, кто может генерировать их.

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

, Но если Вы хотите, чтобы люди знали, что ключи являются действительно Вашими, необходимо генерировать случайные данные, сохранить в нем базу данных И подписать его с ключом.

я хотел бы включать свой открытый ключ в мое программное обеспечение для дешифрованного/читавшего подписи ключа

, необходимо будет, вероятно, купить сертификат для открытого ключа от коммерческого поставщика как Verisign или Thawte, так, чтобы люди могли проверить, что никто не создал Вас программное обеспечение и заменил Ваш открытый ключ их.

382
ответ дан Joshua 4 November 2019 в 12:26
поделиться

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

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

подпись А является доказательством, что у подписывающего лица есть закрытый ключ, который соответствует некоторому открытому ключу. Чтобы сделать это, было бы достаточно зашифровать сообщение с тем отправителем закрытый ключ и включать зашифрованную версию вместе с версией простого текста. Для проверки отправителя дешифруйте зашифрованную версию и проверьте, что это совпадает с простым текстом.

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

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

Так:

  • Для генерации подписи сделайте хеш из простого текста, зашифруйте его с закрытым ключом, включайте его вместе с простым текстом.
  • Для проверки подписи сделайте хеш из простого текста, дешифруйте подпись с открытым ключом отправителя, проверьте, что оба хеша являются тем же.
110
ответ дан 4 revs, 2 users 76% 4 November 2019 в 12:26
поделиться

Да думайте о подписании данных как предоставление его Ваш собственный штамп воска, который никто больше не имеет. Это сделано для достижения целостность и неотказуемость . Шифрование так, никто еще не видит данные. Это сделано для достижения конфиденциальность . Посмотрите Википедию http://en.wikipedia.org/wiki/Information_security#Key_concepts

, подпись А является хешем Вашего сообщения, подписанного с помощью закрытого ключа.

19
ответ дан wha7ever 4 November 2019 в 12:26
поделиться

Подписание производит "хеш" с Вашим закрытым ключом, который может быть проверен с Вашим открытым ключом. Текст представляется ясное.

Шифрование использует открытый ключ получателя для шифрования данных; декодирование сделано с их закрытым ключом.

Так, использование ключей не инвертируется (иначе, Ваш закрытый ключ больше не был бы частным!).

16
ответ дан slim 4 November 2019 в 12:26
поделиться

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

7
ответ дан Michael Borgwardt 4 November 2019 в 12:26
поделиться

Подписание указывает, что Вы действительно - источник или ручаетесь за подписанного объекта. Все могут считать объект, все же.

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

8
ответ дан rjamestaylor 4 November 2019 в 12:26
поделиться

В Вашем сценарии Вы не шифруете в значении асимметричного шифрования; я звонил бы, это "кодирует".

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

3
ответ дан devio 4 November 2019 в 12:26
поделиться

Функционально, Вы используете общественность/шифрование с закрытым ключом, чтобы удостовериться, что только получатель может прочитать Ваше сообщение. Сообщение шифруется тогда зашифрованное использование открытого ключа получателя.

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

Что касается алгоритма использовал: это involes простые числа. Я сделал бы поиск на Google для лучшего объяснения.

2
ответ дан Gerbrand 4 November 2019 в 12:26
поделиться
Другие вопросы по тегам:

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