1. 首页 » 生活常识

根号输入方法与支付数字签名技术原理详解

大家好,互联网的初期是以传输数据为主,而随着应用程序的不断扩大。我们需要加传输的数据进行加密,比如对在线支付的信息进行加密,或者银行系统、公安系统的登陆账号信息,用数字证书来明确登陆人是谁。今天我们讲一下数字证书。

1.生日碰撞问题

有小伙伴发朋友圈说:“两个人同一间宿舍,而且同年同月同日生,这个缘分真的是醉了”。那同一班级中出现生日相同的概率有多大?有的同学,一年有365天,每个有有365种选择,是真的吗?今天我就来分析一下。

至少有2个学生的生日在同一天的对立事件是没有任何学生的生日在同一天。我们把这个问题设想成,每个人排队依次进入一个房间。而房间数量是365间。

若班级有1人,他可以进365中的任何一个房间,则不相同生日概率是365/365;

若班级有2人,则第1人进365中的任何一个房间,而第2人为了不一样可进364中的任何一间,故不相同生日概率365/365* 364/365;

若班级有3人,则不相同生日概率365/365 * 364/365 * 364/365;

如此这般,现在我们有k个人,生日不在同一天的概率是。

支付交易中的数字签字原理是什么?银行下发的数字签字一定安全吗

P生日概率

我们代入数据计算一下,若一个班有10人,有P=88%,则1-P=12%;

若一个班有23人,而P=50%,则1-P=50%;

若一个班有50人,而P=3%,则1-P=97%。

可见只要班级有23人,有相同生日的概率就很大了,然后一个班有50人时,基本上必有生日相同的同学。

2.哈希函数

哈希函数有这样的功能,比如如下的功能:

支付交易中的数字签字原理是什么?银行下发的数字签字一定安全吗

hash 运算

哈希函数有几个特点:

一是单向(one-way)的,只能从左向右算结果,而你从结果推不出运算原先的输入,比如只能从name推出123,但是问123原先的输入是谁,就不知道了。

二是输入可以任意长度,输出是固定长度(fixed length)

不管原先输入是多少项,经hash运算后,输出的长度是固定的。比如非常有名的SHA256哈希函数,输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。

由于特点二这样有个缺点:几个不同的输入可能产生相同的输出,即哈希函数会出现生日碰撞,我们不是希望出现生日碰撞,因为就会引起混淆,不法区分输入。

所以说要尽量不出现生日碰撞,经过分析。如果有k个哈希值,出现生日碰撞大于50%的概率是1.2倍速根号k。比如,现在有100个哈希值,12个输入出现相同输出的概率大于50%;而如果有10000个哈希值,要检验120次才能确定是否有相同的输出。

3.数字签名

数字签名是目的是确定信息来自谁?分为单向加密与双向加密。

支付交易中的数字签字原理是什么?银行下发的数字签字一定安全吗

用户向银行发数据

当用户向银行发送查账户余额的数据时,用户没确定接收的数据是银行的真实数据还是来自黑客的窃听数据。

怎么办呢?

用户向银行发送数据,约定如下:

用户向银行的加密盒子:任何人都可以加密数据;

而银行向用户发送的加密盒子,是相反的,只能用户解密,但只有银行能加密,而且银行发送的数据是经hash计算的。

例如,用户把name会给银行后,而银行name做hash计算后,将123传给用户,用户解密后得出123值与原先传入的name进行比较,若二值一样,则证明数据来源无误。

其中,经hash计算的123值,是公开的,别人获取到也无法推出其输入。就像你知道一个人的生日,而要根据生日来推某个人就很难了。

而由于hash函数的个数是一样的,如同生日一样,所以有可能产生生日碰撞,所有数字签名不是百分之百的安全。在理论是黑客只要一直尝试,会有可能产生一样的哈希输出的,所在在实际应用中,一般会限制登陆次数或出错次数,而降低尝试操作的可能。

支付交易中的数字签字原理是什么?银行下发的数字签字一定安全吗

4.参考文献

Zhao W , Shi R , Shi J , et al. Multibit quantum digital signature with continuous variables using basis encoding over insecure channels[J]. 2021.

#普知成长计划#

声明:本文由"麦兜"发布,不代表"破站"立场,转载联系作者并注明出处:https://www.848586.cn/100952.html