当前位置:  开发笔记 > 编程语言 > 正文

使用.NET中的私钥对文件进行签名

如何解决《使用.NET中的私钥对文件进行签名》经验,为你挑选了1个好方法。

如何使用.NET对文件进行签名,如何在读取后验证生成的密钥是否为有效密钥?

我的目标是拥有一个带有一些值和生成密钥的文本文件.然后,我希望能够检查文件中生成的密钥,以便在我将文件发送给客户后,没有人篡改文件中的值.

更新:在这里找到答案的一些帮助.



1> Dave Van den..:

试试这个:

class Program
{
    static byte[] Sign(string message, RSAParameters key)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.ImportParameters(key);

        byte[] toSign = Encoding.Unicode.GetBytes(message);
        return rsa.SignData(toSign, "SHA1");
    }

    static bool Verify(string message, byte[] signature, RSAParameters key)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.ImportParameters(key);

        byte[] toVerify = Encoding.Unicode.GetBytes(message);
        return rsa.VerifyData(toVerify, "SHA1", signature);
    }

    static void Main(string[] args)
    {
        string message = "Let's sign this message.";

        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Creates a new RANDOM key.
        RSAParameters privatekey = rsa.ExportParameters(true);
        RSAParameters publickey = rsa.ExportParameters(false);

        byte[] signature = Sign(message, privatekey);

        if (Verify(message, signature, publickey))
        {
            Console.WriteLine("It worked!");
        }
    }
}

重要的是要注意每次启动此程序时都会生成一个新的公钥/私钥对.为了做你想做的事,你需要在两端使用它之前保存公钥/私钥对.您的公钥是唯一需要验证的内容,因此您的私钥不会发布到客户端.

您可能需要查看ExportParameters或ExportCspBlob以完成保存/加载公钥/私钥对.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有