Все, что мне нужно, - это сгенерировать подпись, соответствующую строке, и сохранить ее в базе данных, а позже, когда строка потребуется снова, она может быть извлечена из базы данных с использованием сохраненной подписи (то есть путем дешифрования подписи).Могу ли я цифровую подпись строки, а затем расшифровать подпись (оба с помощью ключей), чтобы восстановить исходную строку?
ответ
В первый прочитал это, чтобы вы могли понять процесс: https://crackstation.net/hashing-security.htm затем использовать это: https://github.com/defuse/password-hashing. счастливое кодирование :)
№ Подписи включают в себя потерю данных, поэтому вы не можете восстановить исходные данные. (Вы можете представить только данные, открытый ключ и подпись и спросить: «Работают ли данные кандидата с этой подписью?»)
Если вам нужно доказать, что оно не подделано, вам необходимо сохранить как подпись, так и данные. Вы можете комбинировать их с структурой SignedData PKCS # 7. У .NET есть класс SignedCms, чтобы помочь с этим, у Java, вероятно, есть нечто похожее.
Если то, что вы хотите, чтобы сделать данные нечитаемыми, то, что вы хотите шифрование, не подписания (разница я недавно обсуждали в an answer to a different question, как я уверен, что многие другие). Если вы хотите использовать сертификат и, следовательно, асимметричную операцию, вам, скорее всего, понадобится гибридная схема из-за ограничений по размеру асимметричного шифрования.
u должен хэшировать для этого, как MD5 в java http://stackoverflow.com/questions/415953/how-can-i-generate-an-md5-hash –
Если вам нужно извлечь исходную строку из сохраненной данных, тогда вам нужно шифрование, а не подписание. Подписи позволяют проверить, что данный фрагмент данных является той же строкой, что и тот, который был первоначально подписан; они не позволяют извлекать исходные данные. (Подпись является фиксированным размером, и невозможно получить более длинную оригинальную строку из подписи фиксированного размера.) – yole
Есть способы сделать это, но, пожалуйста, укажите, каковы ваши требования. Зачем вам нужно помещать данные в подпись? Зачем вам шифрование? –