【发布时间】:2025-12-24 20:40:11
【问题描述】:
首先我生成一个签名并放在 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”时,我得到了一个我无法指定的未处理异常!
处理 SHA-2 算法而不是 SHA-1 时有什么区别吗?
EDIT1:
当我指定文件并在“openFileToSign”打开文件对话框中单击“打开”时发生异常。我正在开发“WINDOWS 7”
EDIT2:
异常消息显示“值无效”
并且异常发生在以下行:
byte[] signature_to_sign = MySigner.SignData(data_to_sign,SHA);
【问题讨论】:
-
异常的名称/内容是什么。您有权访问堆栈跟踪吗?还有......你从哪里得到它,哪条线?
-
@Skurmedel,我刚刚编辑了问题以包含一般异常的消息,因为我无法指定确切的类型。
-
您“无法指定”是什么意思?只需将异常复制并粘贴到您的问题中即可。
标签: c# .net cryptography rsa digital-signature