原文链接:数字签名算法介绍和区别

summary:

数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性、认证数据来源和抗否认,遵循OSI参考模型、私钥签名和公钥验证。也是非对称加密算法和消息摘要算法的结合体,常见的数字签名算法主要有RSA、DSA、ECDSA三种,本文对数字签名算法进行详细介绍。

1. RSA

RSA是目前计算机密码学中最经典算法,也是目前为止使用最广泛的数字签名算法,RSA数字签名算法的密钥实现与RSA的加密算法是一样的,算法的名称都叫RSA。密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。

RSA数字签名算法主要包括MD和SHA两种算法,例如我们熟知的MD5和SHA-256即是这两种算法中的一类。

2. DSA

DSA全称Digital Signature Algorithm,DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,所以它比RSA要很多,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

DSA的整个签名算法流程如下:

  • 发送方使用SHA-1和SHA-2编码将发送内容加密产生的数字摘要;
  • 发送方用自己的专用密钥对摘要进行再次加密得到数字签名;
  • 发送方将原文和加密后的摘要传给接收方;
  • 接收方使用发送方提供的密钥对进行解密 ,同时对收到的内容用SHA-1/SHA-2编码加密产生同样的摘要;
  • 接收方再将解密后的摘要和d步骤中加密产生的摘要进行比对,如果两者一至,则说明传输过程的信息没有被破坏和篡改,否则传输信息则不安全。

3. ECDSA椭圆曲线数字签名算法

ECDSA是用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。而ECC(全称Elliptic Curves Cryptography)是一种椭圆曲线密码编码学。

ECC与RSA 相比,有以下的优点:

  • 相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。
  • 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
  • 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
  • 带宽要求低使得ECC具有广泛得应用前景。

几种常见的数字签名算法比较相关推荐

  1. 几种常见的数字调制方法 ASK,FSK,GFSK

    说说常见的射频调制方式吧. 常见的有ASK,FSK,GFSK. 1.ASK(Amplitude Shift Keying),即振幅键控方式,这种调制方式是根据信号的不同,调节载波的幅度,载波的频率是保 ...

  2. 国际 数字签名算法介绍和区别

    数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性.认证数据来源和抗否认,遵循OSI参考模型.私钥签名和公钥验证.也是非对称加密算法和消息摘要算法的结合体,常见的数字签 ...

  3. .NET Core加解密实战系列之——消息摘要与数字签名算法

    简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...

  4. ECDSA数字签名算法

    一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准. 它 ...

  5. ECDSA数字签名算法(java实现ECDSA签名验签)

    一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准.它在 ...

  6. 【特征提取+分类模型】4种常见的NLP实践思路

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈琰钰,清华大学,Datawhale成员 越来越多的人选择参加算法 ...

  7. android内存池,两种常见的内存管理方法:堆和内存池

    描述 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据.若需将数据存储在内存中,以便进一步运算.处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空 ...

  8. Ajax 和 XML: 五种常见 Ajax 模式

    Asynchronous JavaScript + XML(Ajax)无疑是 2006 年最热门的技术术语,且有望在 2007 得到进一步发展.但是对您的应用程序来说它究竟有什么意义呢?Ajax 应用 ...

  9. python中的排序方法都有哪些_几种常见的排序方法总结(Python)

    几种常见的排序算法总结(Python) 排序算法:是一种能将一串数据依照特定顺序进行排序的一种算法. 稳定性:稳定排序算法会让原本有相等键值的记录维持相对次序.也就是如果一个排序算法是稳定的,当有两个 ...

最新文章

  1. 关于自定义控件设计时如何把属性写入aspx中的研究(上)
  2. HTML在计算机中指什么,计算机正在执行的指令存放在什么中
  3. Codeforces 868F Yet Another Minimization Problem 决策单调性 (看题解)
  4. anaconda3虚拟环境离线迁移到服务器
  5. aop实现原理-动态代理CGLib代理
  6. 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...
  7. red hat linux 安装oracle10g vm,oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装
  8. Keys.js 官方使用说明
  9. java中IO流详解
  10. j2ee核心模式_Java设计模式是什么?
  11. 【手指识别】基于matlab GUI指尖图像采集与检测【含Matlab源码 585期】
  12. bsvadvaanjalvsc
  13. 在网络蚂蚁中设置代理服务器
  14. thinkphp 下实现繁简体汉字转换
  15. 小程序二维码生成普通链接并携带参数
  16. 文档没保存可以找回吗?文件丢失恢复方法
  17. 一维码识别技术与二维码识别技术
  18. Excel 按照某一列不同内容插入分页符号
  19. PHP+AJAX开发幸运大转盘抽奖
  20. mac输密码麻烦?一位数密码来了!

热门文章

  1. Linux安装VNC远程桌面管理工具
  2. IT计算机行业程序员职业发展路线图(完整版+珍藏版)
  3. 一款非常优秀的数据库建模软件PDMman
  4. DELL服务器显示0xc000021a,win10系统蓝屏0xc000021a错误怎么修复
  5. 查看yum仓库中可以安装的docker版本命令
  6. 六步加入HTML5工作组
  7. java 打包工具jar,打包工具类为jar包,注意事项
  8. linux多级反馈队列的实现,多级反馈队列调度算法详解
  9. 计算机硬件是如何驱动的,驱动程序是什么?能做什么?如何正确安装驱动程序?...
  10. 【成像】【2】Terahertz辐射发展前景