数字签名学习

1 基本概念

数字签名是一种加密技术,用于验证信息来源的身份和数据的完整性。

就是对一个东西签上自己的名;收到的人可以验证这东西是你发的;这里是用数字的方式;

对字符串也可以签名,签名以后,还是一个字符串,不过是经过签名的字符串。

密钥有公钥和私钥; 公钥是公开的,人人都知道;私钥是自己的,只有自己知道;

签上自己的名,那肯定用自己的私钥;

C#代码看一下;

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace rsademo
{
    public partial class Form1 : Form
    {
        private string publicKey;
        private string privateKey;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (var rsa = new RSACryptoServiceProvider())
            {
                publicKey = rsa.ToXmlString(false); // 公钥
                privateKey = rsa.ToXmlString(true); // 私钥
            }

        }
        public static string SignData(string data, string privateKey)
        {
            using (var rsa = new RSACryptoServiceProvider())
            {
                rsa.FromXmlString(privateKey);
                byte[] dataBytes = Encoding.UTF8.GetBytes(data);
                byte[] signatureBytes = rsa.SignData(dataBytes, CryptoConfig.MapNameToOID("SHA1"));
                return Convert.ToBase64String(signatureBytes);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = SignData(textBox1.Text, privateKey);
        }
    }
}

首先new一个RSA加密服务提供者对象;

然后可以生成公钥和私钥;

写一个签名函数,需要的参数是待签名的字符串、私钥;

第一个文本框是原来的字符串,第二个文本框是经过数字签名的字符串;

相关推荐
花落已飘11 天前
openssl对称加密代码讲解实战
加密·openssl
花落已飘13 天前
openssl加密算法简介
加密·openssl
阿达_优阅达18 天前
常见问题 | 数字签名如何保障电子商务交易安全?
安全·企业数字化转型·数字签名·合同管理·协议管理
网络研究院23 天前
新工具可绕过 Google Chrome 的新 Cookie 加密系统
前端·chrome·系统·漏洞·加密·绕过
笔头子1 个月前
【linux】物理卷、卷组、逻辑卷
linux·磁盘·加密·1024程序员节
回归心灵1 个月前
sharding sphere 加解密功能 like语句 SQL 解析报错
sql·加密·sharding sphere
软件算法开发1 个月前
基于AES的遥感图像加密算法matlab仿真
matlab·加密·aes·遥感图像
racent锐成信息2 个月前
代码签名证书如何为软件签名?代码签名证书签名指南
数字签名·软件安全·代码签名证书·代码签名·软件数字签名
一丝晨光3 个月前
Https 加密原理
开发语言·网络·网络协议·http·https·加密·rsa
闲人编程3 个月前
Python 实现 SHA-1 数字摘要签名算法
开发语言·python·算法·密码学·加解密·数字签名·sha