一文搞清楚数字签名是什么(Java代码实现)‘ag真人’

作者:ag真人发布时间:2021-07-15 14:30

本文摘要:数字签名在数据的交互中一直都占据着很重要的职位,因此,这篇文章对其原理举行整理总结一下。最后再给出代码的实现。 一、简朴认识相信我们都写过信,在写信的时候落款处总是要留下自己的名字,用来表现写信的人是谁。我们签的这个字就是生活中的签名:而数字签名呢?其实也是同样的原理,他的寄义是:在网络中传输数据时候,给数据添加一个数字签名,表现是谁发的数据,而且还能证明数据没有被窜改。OK,数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被窜改)。

ag真人

数字签名在数据的交互中一直都占据着很重要的职位,因此,这篇文章对其原理举行整理总结一下。最后再给出代码的实现。

一、简朴认识相信我们都写过信,在写信的时候落款处总是要留下自己的名字,用来表现写信的人是谁。我们签的这个字就是生活中的签名:而数字签名呢?其实也是同样的原理,他的寄义是:在网络中传输数据时候,给数据添加一个数字签名,表现是谁发的数据,而且还能证明数据没有被窜改。OK,数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被窜改)。

下面我们就来好好的看一下他的底层实现原理是什么样子的。二、基本原理为了明白的清楚,我们通过案例一步一步来解说。话说张三有俩好哥们A、B。由于事情原因,张三和AB写邮件的时候为了宁静都需要加密。

于是张三想到了数字签名:整个思路是这个样子的:第一步:加密接纳非对称加密,张三有三把钥匙,两把公钥,送给朋侪。一把私钥留给自己。第二步:A或者B写邮件给张三:A先用公钥对邮件加密,然后张三收到邮件之后使用私钥解密。

第三步:张三写邮件给A或者B:(1)张三写完邮件,先用hash函数生成邮件的摘要,附着在文章上面,这就完成了数字签名,然后张三再使用私钥加密。就可以把邮件发出去了。(2)A或者是B收到邮件之后,先把数字签名取下来,然后使用自己的公钥解密即可。

这时候取下来的数字签名中的摘要若和张三的一致,那就认为是张三发来的,珊再对信件自己使用Hash函数,将获得的效果,与上一步获得的摘要举行对比。如果两者一致,就证明这封信未被修悔改。上面的流程我们使用一张图来演示一下:首先把公钥送给朋侪A和B:打开UC浏览器 检察更多精彩图片然后呢,就是朋侪A或者B给张三发邮件:另有就是最后一个比力贫苦的,张三给A或者B发邮件:OK,上面的这几张图想必你应该能够明白清楚了,其实另有一些很庞大的情况,因为上面的数字签名是在理想状态下完成的,可是如果遇到了公钥错误,摘要不正确该如那边理呢?这里就涉及到数字证书了,我们来分析一下。

三、数字证书上面提到我们对签名举行验证时,需要用到公钥。如果公钥是伪造的,那我们无法验证数字签名了,也就基础不行能从数字签名确定对方的正当性了。这时候证书就闪亮登场了。

我们可能都有考种种证书的履历,好比说普通话证书,四六级证书等等,可是归根结底,到任何场所我们都能拿出我们的证书来证明自己确实已经考过了普通话,考过了四六级。这里的证书也是同样的原理。

如果不明白证书的作用,我们可以举一个例子,好比说我们的结业证书,任何公司都市认可。为什么会认可?因为那是国家发的,大家都信任国家。也就是说只要是国家的认证机构,我们都信任它是正当的。

ag真人

那么这个证书是如何生成的呢?我们再来看一张图:此时纵然张三的朋侪A把公钥弄错了,张三也可以通过这个证书验证。四、代码验证常用的数字签名算法有:RSA、DSA、ECDSA。这里的代码参考了慕课网。

下面给出三种方式的代码实现:1、RSA2、DSA3、ECDSA代码已经在这里了,可以自己去实现一遍即可。


本文关键词:一文,搞,清楚,数字签名,是什么,Java,代码,实现,ag真人

本文来源:ag真人-www.gzllds.com