2016-09-22 12 views
-3

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

+0

u должен хэшировать для этого, как MD5 в java http://stackoverflow.com/questions/415953/how-can-i-generate-an-md5-hash –

+1

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

+0

Есть способы сделать это, но, пожалуйста, укажите, каковы ваши требования. Зачем вам нужно помещать данные в подпись? Зачем вам шифрование? –

ответ

1

№ Подписи включают в себя потерю данных, поэтому вы не можете восстановить исходные данные. (Вы можете представить только данные, открытый ключ и подпись и спросить: «Работают ли данные кандидата с этой подписью?»)

Если вам нужно доказать, что оно не подделано, вам необходимо сохранить как подпись, так и данные. Вы можете комбинировать их с структурой SignedData PKCS # 7. У .NET есть класс SignedCms, чтобы помочь с этим, у Java, вероятно, есть нечто похожее.

Если то, что вы хотите, чтобы сделать данные нечитаемыми, то, что вы хотите шифрование, не подписания (разница я недавно обсуждали в an answer to a different question, как я уверен, что многие другие). Если вы хотите использовать сертификат и, следовательно, асимметричную операцию, вам, скорее всего, понадобится гибридная схема из-за ограничений по размеру асимметричного шифрования.

 Смежные вопросы

  • Нет связанных вопросов^_^