Сначала я генерирую подпись и помещаю ее в текстовое поле txt_EmpSignature, а затем для подписи документов использую следующий аргумент в обработчике событий щелчка кнопки «Подписать»:
RSACryptoServiceProvider MySigner = new RSACryptoServiceProvider();
openFileToSign.ShowDialog();
FileStream file_to_sign = new FileStream(openFileToSign.FileName, FileMode.Open, FileAccess.Read);
BinaryReader reader_to_sign = new BinaryReader(file_to_sign);
byte[] data_to_sign = reader_to_sign.ReadBytes((int)file_to_sign.Length);
MySigner.FromXmlString(txt_EmpSignature.Text);
SHA1CryptoServiceProvider SHA = new SHA1CryptoServiceProvider();
byte[] signature_to_sign = MySigner.SignData(data_to_sign,SHA);
UTF8Encoding UTF = new UTF8Encoding();
txt_DocSignature.Text = Convert.ToBase64String(signature_to_sign);
reader_to_sign.Close();
file_to_sign.Close();
Затем, когда я заменяю«SHA1CryptoServiceProvider» с «SHA256CryptoServiceProvider» Я получаю необработанное исключение, которое не могу указать!
Есть ли разница при обработке algorthims SHA-2 вместо SHA-1?
EDIT1:
Исключение происходит, когда я указываю файл и нажимаю «Открыть» в диалоге открытия файла «openFileToSign».И я работаю над «WINDOWS 7»
EDIT2:
В сообщении об исключении указано «Значение недопустимо»
, а исключение возникает в строке:
byte[] signature_to_sign = MySigner.SignData(data_to_sign,SHA);