html签名档代码(代码个性签名)

最近参与了数字签名项目,李永乐的数字签名视频也推荐给了朋友。看完之后大家都觉得还是有点抽象。没办法。我们必须在星期五下午来一次内部分享。能说清楚的话就是“赛永乐”【捂脸】

html签名档代码(代码个性签名)

什么是数字签名?

要理解什么是数字签名,先想想日常生活中常见的手写签名。比如和公司签订劳动合同,需要在纸质合同上签名。签名的目的是证明你对合同内容的认可。以后的任何纠纷都会有据可查。从上面的场景,我们可以总结出两点:1。签名一定要具体到具体的内容才有意义,上例签订的合同也一定要签名才有意义,你在一张空白纸上签名也没有意义(数字签名也是一样,脱离原始信息谈数字签名没有意义,只有原始信息经过数字签名才有意义)。2.签名的目的是记录在案,特别是

数字签名也是如此,只不过手写签名被改成了数字形式(即一串代码)。

以传输一个PDF文件为例,A机构需要传输一个PDF文件给B机构,为了保证安全,采用了数字签名,所以B机构在收到PDF文件后需要确认两件事(同时要有数字签名):

1.该PDF文件由机构A发送;2.此PDF文件在传输过程中未被篡改。以上两个要求可以分别通过非对称加密和哈希函数技术来实现。简单来说:

签名=非对称加密+哈希函数。我们来讨论一下以上两个需要确认的问题。

1.确认文件是由通过非对称加密发送的。

什么是非对称加密?

非对称加密对应的加密算法是对称加密,很好理解。组织a与组织b通信,约定一个密码,组织a对要传输的数据进行加密;B收到A发送的加密数据后,解密得到A发送的原始数据..以上过程简单易懂,但有几个问题:(1)如果甲组织或乙组织中的任何一方不小心泄露了密码,就会出现安全问题;(2)任何两方需要确定一个密码进行通信,导致密码过多,管理困难。上述组织A和组织b之间有一个约定的密码,如果组织A要向组织C、组织D、组织E等上百个组织发送数据。,那么组织A需要管理上百个密码,任何一个密码错误都会导致发送异常。

怎么解决上面提到的对称加密的两个问题?答案是使用“非对称加密”。

非对称加密到底是什么?

首先,如果你是A组织,你需要向B组织、C组织、D组织等上百个组织发送数据。不需要和他们一一确定通信密码,既不安全也不麻烦。而是你要向“颁发数字证书的权威机构”(必须是权威机构,能背书的,不能是小作坊)申请,说我要加密传输,而且是非对称加密传输。然后权威会给你一套密钥对,即公钥和私钥(实际应用中会以Ukey的形式发放),反复告诉你:私钥一定要管好!

现在,您已经成功获得了公钥和私钥,可以向数百家机构传输数据了。在此之前,你还有一件事要做:召开一个盛大的新闻发布会,告诉数百个组织,我拿到了钥匙,可以和你们交流。嗯…忘记它…开发布会是Reebs的事,我们就不操作了。让我们群发邮件,把公钥发给他们(其实我们已经处理了对称加密中的第二个问题,不需要管理太多的密码。如果是对称加密,就不会群发,而是一个一个发。如果邮件内容泄露,麻烦就大了)。群发邮件的内容如下:

嗨:我是组织A,我的公钥是ABC12345。你可以通过这个密码和我交流!本来邮件的内容到这里就可以讲完了,但是你觉得这几百个机构可能有几个技术实力太弱,不知道怎么用,就给他们加了一些备注。

嗨:我是组织A,我的公钥是ABC12345。你可以通过这个密码和我交流!(一)当你收到声称是“我”发来的消息时,请用ABC12345解密!如果能成功解密,说明信息是我发的,只有我能加密,因为只有我有私钥。如果解密失败,就有人冒充我。不要上当!(二)如果你要给我发信息,可以用ABC12345加密。不用担心数据泄露。只有我能解密,因为只有我有私钥。很好!你的邮件言简意赅,效果甚至比Reebs的发布会还要好。数百家机构不仅收到了你的公钥信息,还了解了非对称加密的核心应用场景。

现在,回到我们需要确认的第一件事,机构B收到了一个PDF和一个数字签名(假设MxMt778899),据称是您发送的。他再次仔细阅读了你的邮件,并按照你教他的步骤用公钥ABC12345解密签名。

解密成功!!!

b组织现在可以确定了,这个PDF就是你发的!

就算你说私钥泄露了,法律也会站在b机构一边,别忘了这个密钥对是权威机构颁发的!因此,数字签名可以起到反否定的作用。你的银行卡丢了,密码写在上面,100元存款被取走。然后你说不是我自己操作,让银行赔钱。银行:出去

好了,我们通过非对称加密成功解决了第一个问题。

PS:这里有个问题需要讨论一下。有同学问:A机构发给B机构的加密数据,如果数据是C机构获取的,因为公钥是公开的,C机构也可以解密查看吗?是的,没错。机构C确实可以查看。但这并不影响非对称加密的应用场景。这里应用场景起到了机构A否认的作用,即确认这份文件是机构A发的,机构A无法否认!这就好比你和公司签订的劳动合同被其他同事看到了,并不影响你对合同内容的责任。(非对称加密是为了证明合同是你签的,不能否认!你不能说合同是我同事看到的,所以这个合同我不需要负责。至于如何避免让机构C拿到数据,我们可以通过其他方式解决,比如必须输入用户名和密码才能查看。

2.通过哈希函数确认文件在传输过程中没有被篡改。

好了,现在B社拿到了A社发的PDF文件,确认是A社发的PDF,上面PDF的内容是:10月1日下午3: 00到218会议室。

b看起来很蠢。十月一号不是放假吗?为什么要开会?离开这里!/真的吗?

b组织现在严重怀疑这个PDF的准确性!急需知道这个PDF内容有没有被篡改!

如何通过哈希函数让B机构相信这份文件的真实性?我们先来了解一下哈希函数。

什么是哈希函数?

假设有一个哈希函数f(x) = y,那么这个函数满足以下特征:

x可以是任何东西。不同的东西有不同的Y值。Y的长度和格式是固定的。不能从Y值推断X是纯理论,可能有点抽象。用点白话解释一下吧。

假设我有一个杯子,那么f(杯子)= 1122334455假设我有一件连衣裙,那么f(连衣裙)= 0022331122假设我有一颗钻石,那么f(钻石)= 9999999假设我有一个PDF,那么f(PDF) = 6677009911根据上面的特征3毫无意义!你根本不知道它是什么,你不可能通过0022331122知道它是个杯子!那我该怎么办?碰撞!!!继续碰撞!!!无尽的碰撞!!!你找到了一亿本书,一亿件衣服,一亿个pdf,还不停地通过哈希函数获取哈希值…不幸的是,没有一个哈希值是0022331122。你找到了另外1亿个杯子,1亿把椅子,但还是没有…因为你之前的那个是稀罕物,已经被你打碎了。理论上,世界上没有任何一个项可以得到0022331122的哈希值。(消除哈希函数冲突的可能性)

你现在懂一点哈希函数了吗?在实际的程序开发中,哈希函数有很大的用处。常见:

1.密码加密你原来的密码123,当然不能明文存储在数据库里。对程序做一个hash,把它变成11 axx 88 aa。即使数据库泄露,黑客也无法知道你的原始密码。当然,在实际的程序开发中,考虑到彩虹表等问题,还需要通过加盐的方式进一步保证密码的安全性。2.上传文件。你觉得一部电影很精彩,想上传到你的网盘。这是一部10G的高清电影。按照你的想象,上传至少需要10分钟。结果如何?神奇的事情发生了,第二遍!!!几乎一瞬间,你的视频就上传了。发生了什么事?原来,在把视频上传到服务器之前,网盘程序在本地对你的视频进行了哈希处理,哈希值为aavv222000,然后它拿着这个哈希值搜索数据库。嗯…已经有人上传了这部电影(看来你们也有类似的爱好)。然后就不用继续上传了,浪费资源。直接加一条记录就行了。通过上面的讨论,你大概已经了解了hash函数,熟悉了它常见的应用场景,那么我们的问题应该可以顺利解决了。如何确定这个PDF文件是否被篡改?比较PDF文件的哈希值!

首先,在机构A传输文件之前,通过hash函数对PDF文件进行一次hash(信息摘要),得到一个hash值,假设为SZszsz112266。然后,用非对称加密私钥对SZSZ1226进行加密,得到加密值MxMt778899。将此加密值作为数字签名与PDF文件一起发送给机构B。在收到PDF文件和数字签名后,机构B首先使用机构a的公钥对其进行解密。解密成功,并获得值szsz112266。至此,可以说明PDF文件是由机构a发送的,那么,为了确认PDF文件是否被篡改,机构B可以通过hash函数对PDF文件进行一次hash。如果hash的结果值与szsz112266一致,说明文件没有被篡改;如果不一致,对不起,这个PDF文件有问题。

到目前为止,我们已经成功地解释了数字签名技术如何解决我们最关心的两个问题。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/305406.html

发表回复

登录后才能评论