【原创】 RSA对文件进行签名操作
发布日期:2022/11/21 作者:
浏览:831
先看看工具大概长啥样
我们先选取一个文件,然后对文件进行签名,签名返回的是128位的byte[]数组,为了显示方便,我们进行编码转换,以base64 格式进行显示。当然,RSA签名是有私钥支持才可以的。用私钥签名,然后再用公钥进行验签操作。以下是相关代码
//文件签名 private void bt_filesignature_Click(object sender, EventArgs e) { try { if (File.Exists(this.tb_filepath.Text)==false) { MessageBox.Show("请先选择一个有效的文件路径"); return; } byte[] data = File.ReadAllBytes(this.tb_filepath.Text); (byte[] signature, string PublicKey) = Tools.Signature(this.tb_prkey.Text,data); this.tb_signatrue.Text=Convert.ToBase64String(signature); this.tb_key_32.Text=Convert.ToBase64String(signature.Take(32).ToArray()); this.tb_iv_16.Text=Convert.ToBase64String(signature.Skip(32).Take(16).ToArray()); } catch (Exception ex) { this.tb_signatrue.Text=ex.Message+ex.InnerException?.Message; } }
签名成功后返回两个数据,一个是签名本身,一个是公钥,是返回给客户验签用的。
public static (byte[],string) Signature(string PriKey, byte[] data)
{
var rsaWrite = new RSACryptoServiceProvider();
rsaWrite.FromXmlString(PriKey);
string PublicKey = rsaWrite.ToXmlString(false);
//签名
byte[] signature = rsaWrite.SignData(data, SHA1.Create());
return (signature ,PublicKey);
}
下拉加载更多评论