精华内容
下载资源
问答
  • 数字签名是什么

    2020-01-14 17:12:48
    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了...

    作者: 阮一峰

    日期: 2011年8月 9日

    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。

    我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。

    文中涉及的密码学基本知识,可以参见我以前的笔记

    ====================================================

    数字签名是什么?

    作者:David Youd

    翻译:阮一峰

    原文网址:http://www.youdzone.com/signature.html

    1.

    鲍勃有两把钥匙,一把是公钥,另一把是私钥。

    2.

    鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

    3.

    苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

    4.

    鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

    5.

    鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

    6.

    然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

    7.

    鲍勃将这个签名,附在信件下面,一起发给苏珊。

    8.

    苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

    9.

    苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

    10.

    复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

    11.

    后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

    12.

    鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

    13.

    苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

    14.

    下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

    15.

    首先,客户端向服务器发出加密请求。

    16.

    服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

    17.

    客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

    18.

    如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

    19.

    如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

    20.

    如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

    (完)

    文档信息

    • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
    • 发表日期: 2011年8月 9日
    展开全文
  • 它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了...

    原址:点击打开链接

    (一)对称加密(Symmetric Cryptography)
    对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
    对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
    2000年10月2日,美国国家标准与技术研究所(NIST--American National Institute of Standards and Technology)选择了Rijndael算法作为新的高级加密标准(AES--Advanced Encryption Standard)。.NET中包含了Rijndael算法,类名叫RijndaelManaged,下面举个例子。
    加密过程:

    private string myData = "hello";
    private string myPassword = "OpenSesame";
    private byte[] cipherText;
    private byte[] salt = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0 };

    private void mnuSymmetricEncryption_Click(object sender, RoutedEventArgs e)
    {
    var key = new Rfc2898DeriveBytes(myPassword, salt);
    // Encrypt the data.
    var algorithm = new RijndaelManaged();
    algorithm.Key = key.GetBytes(16);
    algorithm.IV = key.GetBytes(16);
    var sourceBytes = new System.Text.UnicodeEncoding().GetBytes(myData);
    using (var sourceStream = new MemoryStream(sourceBytes))
    using (var destinationStream = new MemoryStream())
    using (var crypto = new CryptoStream(sourceStream, algorithm.CreateEncryptor(), CryptoStreamMode.Read))
    {
    moveBytes(crypto, destinationStream);
    cipherText = destinationStream.ToArray();
    }
    MessageBox.Show(String.Format("Data:{0}{1}Encrypted and Encoded:{2}", myData, Environment.NewLine, Convert.ToBase64String(cipherText)));
    }
    private void moveBytes(Stream source, Stream dest)
    {
    byte[] bytes = new byte[2048];
    var count = source.Read(bytes, 0, bytes.Length);
    while (0 != count)
    {
    dest.Write(bytes, 0, count);
    count = source.Read(bytes, 0, bytes.Length);
    }
    }

    解密过程:

    private void mnuSymmetricDecryption_Click(object sender, RoutedEventArgs e)
    {
    if (cipherText == null)
    {
    MessageBox.Show("Encrypt Data First!");
    return;
    }
    var key = new Rfc2898DeriveBytes(myPassword, salt);
    // Try to decrypt, thus showing it can be round-tripped.
    var algorithm = new RijndaelManaged();
    algorithm.Key = key.GetBytes(16);
    algorithm.IV = key.GetBytes(16);
    using (var sourceStream = new MemoryStream(cipherText))
    using (var destinationStream = new MemoryStream())
    using (var crypto = new CryptoStream(sourceStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read))
    {
    moveBytes(crypto, destinationStream);
    var decryptedBytes = destinationStream.ToArray();
    var decryptedMessage = new UnicodeEncoding().GetString(
    decryptedBytes);
    MessageBox.Show(decryptedMessage);
    }
    }

    对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

    (二)非对称加密(Asymmetric Cryptography)
    1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。
    非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
    目前最常用的非对称加密算法是RSA算法,是Rivest, Shamir, 和Adleman于1978年发明,他们那时都是在MIT。.NET中也有RSA算法,请看下面的例子:
    加密过程:

    private byte[] rsaCipherText;
    private void mnuAsymmetricEncryption_Click(object sender, RoutedEventArgs e)
    {
    var rsa = 1;
    // Encrypt the data.
    var cspParms = new CspParameters(rsa);
    cspParms.Flags = CspProviderFlags.UseMachineKeyStore;
    cspParms.KeyContainerName = "My Keys";
    var algorithm = new RSACryptoServiceProvider(cspParms);
    var sourceBytes = new UnicodeEncoding().GetBytes(myData);
    rsaCipherText = algorithm.Encrypt(sourceBytes, true);
    MessageBox.Show(String.Format("Data: {0}{1}Encrypted and Encoded: {2}",
    myData, Environment.NewLine,
    Convert.ToBase64String(rsaCipherText)));
    }

    解密过程:

    private void mnuAsymmetricDecryption_Click(object sender, RoutedEventArgs e)
    {
    if(rsaCipherText==null)
    {
    MessageBox.Show("Encrypt First!");
    return;
    }
    var rsa = 1;
    // decrypt the data.
    var cspParms = new CspParameters(rsa);
    cspParms.Flags = CspProviderFlags.UseMachineKeyStore;
    cspParms.KeyContainerName = "My Keys";
    var algorithm = new RSACryptoServiceProvider(cspParms);
    var unencrypted = algorithm.Decrypt(rsaCipherText, true);
    MessageBox.Show(new UnicodeEncoding().GetString(unencrypted));
    }

    虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:
    (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。
    (2) Alice的浏览器向银行的网站请求公钥。
    (3) 银行将公钥发送给Alice。
    (4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。
    (5) Alice的浏览器将加密后的对称密钥发送给银行。
    (6) 银行使用私钥解密得到Alice浏览器的对称密钥。
    (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

    (三)总结
    (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
    (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
    (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

    ****************************************************************************************************************************************************************************************

    今天,我读到一篇好文章

    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。

    我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。

    文中涉及的密码学基本知识,可以参见我以前的笔记

    ====================================================

    数字签名是什么?

    作者:David Youd

    翻译:阮一峰

    原文网址:http://www.youdzone.com/signature.html

    1.

    鲍勃有两把钥匙,一把是公钥,另一把是私钥。

    2.

    鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

    3.

    苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

    4.

    鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

    5.

    鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

    6.

    然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

    7.

    鲍勃将这个签名,附在信件下面,一起发给苏珊。

    8.

    苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

    9.

    苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

    10.

    复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

    11.

    后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

    12.

    鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

    13.

    苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

    14.

    下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

    15.

    首先,客户端向服务器发出加密请求。

    16.

    服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

    17.

    客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

    18.

    如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

    19.

    如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

    20.

    如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

    (完)


    展开全文
  • 什么是Staking? Staking也就是质押的意思,POS共识机制和类POS共识机制发展下的特殊产物。 区块链行业的两种主流共识算法分别POW和POS,POW共识机制以工作量来分配所得,意味着多劳多得。POS以权益来分配...
  • 二、新零售的思考---什么是新零售? a) 从概念上理解:区别于传统或者旧模式零售 b) 从模式上理解:打破现有零售的定义,创新型的运作模式。更多的识别、洞察、触达、服务消费者,制造丰富多彩的场景满足消费


    一、零售业数字化转型趋势:

    a)        49% 已制定好数字化变革战略,并已经实施

    b)        中国消费者电商购物渗透率已达41%以上

     

    二、新零售的思考---什么是新零售?

    a)        从概念上理解:区别于传统或者旧模式零售

    b)        从模式上理解:打破现有零售的定义,创新型的运作模式。更多的识别、洞察、触达、服务消费者,制造丰富多彩的场景满足消费者。让消费者从顾客转变为用户,促进客单价的提升。另外,从传统零售的角度出发,整合资源,减少内部流转成本,增大平效、人效等。

    c)        从技术上理解:在营销方面,满足所有消费者所需要时,获取消费者的信息及行为,再结合社会数据,形成有利于营销策略的销售方案。在企业管理方面,通过APP等软件,提高信息沟通效率。

    d)        线上线下与新零售:线上线下只是新零售的一种标志,或者说是框架。我理解线上线下的内涵是在这种框架下带给客户更多的消费场景,更方便的触达消费者,更好的服务消费者。

    e)        新零售是运用自己的核心竞争能力来不断吸引顾客,最终达到经营顾客生态的数字化经营实体;未来零售—顾客运营公司、行业数据公司、卖商品和服务的多元经营性公司。

    三、全渠道的思考【王府井 刘长鑫】

    a)        全渠道实践是一个闭环场景而不是一个能力

    闭环体现两个要素:环境手段---全渠道场景和商品或服务的内容(核心能力)

    全渠道实践的作用发挥需要企业核心能力的基本保障;

    b)        全渠道实践一直在路上,在路上就需要持续考虑现在和未来两个因素,动态连续

    在路上最难办的是组合协调和执行力

    在路上最终必然走到一个目标----顾客需求的满足,其实就是途同归顾客需求才能才能持久

    c)        全渠道实践的虚实结合

    移动端流量平台

    营销数字平台的建设

    渠道顾客的触达能力

    d)        自开发与社会资源引入的关系

    结论:要引进社会资源共同打造全渠道建设

    e)        什么是实体资源真正的底线

                            i.             围绕核心竞争力的管理能力

                          ii.             围绕顾客的渠道感知能力

                         iii.             围绕顾客数据的理解能力

                         iv.             围绕顾客的互动运营能力

                          v.             围绕顾客的价值转化能力

    总结:技术可以拿来,能力必须自己培养。

    f)         结束语:自信与坚持

    全渠道实践之路,没有标准答案,其难点就在于各自公司的目标不一样、自身的条件也不一样,所以每个企业都会有自己的做法,也有自己的理由。

    所以,我认为,要敢于自信前行、摒弃杂音、坚定不移、不到终点不足以评判对错,这样才能走出转型的创新之路。

     

     


    展开全文
  • if 后面跟的条件表达式,条件表达式的结果为True或者False。 (1)如果if后面的条件是数字,只要这个数字不是0,python都会...(2)如果if后面跟的字符串,则只要这个字符串不为空串,python就把它看作True,...

    if 后面跟的是条件表达式条件表达式的结果为True或者False。

    (1)如果if后面的条件是数字,只要这个数字不是0,python都会把它当做True处理,见下面的例子:

    if 3:

        print 'OK'

    输出OK,但是如果数字是0,就会被认为是False。

    (2)如果if后面跟的是字符串,则只要这个字符串不为空串,python就把它看作True,参见下例

    if 'hehe':

        print 'No problem'

    No problem 就会被输出。

    展开全文
  • 详解 TensorBoard-如何调

    万次阅读 2017-05-12 12:46:11
    什么是 TensorBoardTensorBoard 是 TensorFlow 上一个非常酷的功能,我们都知道神经网络很多时候就像是个黑盒子,里面到底是什么样,是什么样的结构,是怎么训练的,可能很难搞清楚,而 TensorBoard 的作用就是可以...
  • 财务上的大写数字从1到10分别

    万次阅读 2012-06-08 08:40:45
    大家经常要填写的大写数字,问什么要用大写数字呢?想必很多人都不是很清楚! 先看看以下两个有关大写数字的表格: 1、数码与大、小写数字的对照表: 数码 小写数字 大写数字 0 ○ 零 1 一 壹 2 二 贰 3 三 叁/...
  • 案例中,往往使用真实数据,为什么我们要使用sklearn自带的数据呢?因为真实数据在随机森林下的调过程,往往非常缓慢。真实数据量大,维度高,在使用随机森林之前需要一系列的处理,因此不太适合用来做直播中的...
  • 不知道为什么,前端显示的所有数据项都没有错,就只有时间那一项很奇怪,一串数字,而且这个数字在数据库怎么都找不到……然后我在后端从service到controller都debug了一遍,发现数据都没有错,拿的都时间啊。...
  • 展开全部1、这个原因需要查看Character.isDigit(a)的源码可以...做比32313133353236313431303231363533e59b9ee7ad9431333431363030较,判断如果相同就是数字,那么这个内置参数值是什么?找一下定义可以看到这个...
  • 什么是kinect2 标定

    千次阅读 2018-11-14 14:17:35
    获得一个相机的内参 外 为啥要标定? 世界上没有相同的树叶,也不会有一模一样的kinect,所以每个设备的参数都要标定下。 不标定行不行? 根据查阅资料,个人标定难度比较大,使用默认参数也不失为一种方案。 ...
  • 好几个入都需要进行这个特殊的设定————校验输入框不能输入非数字并且数字保留两位小数 并且不能输入空,这就要求我们在输入框失去焦点的时候需要做点什么,没错,我们需要blur函数 这个列表,里面的每一个...
  • 。这一节,我们就来使用我们刚才学的,基于方差和偏差的调方法,在乳腺...在本章,我为大家准备了kaggle上下载的辨别手写数字的数据,有4W多条记录700多个左右的特征,随机 森林在这个辨别手写数字的数据上有非常好的
  • 许多消费者会问,社保编号是什么?有什么作用呢?我怎么查到自己的社保编号?实际上社保编号就是一串数字,也是该参保人参保的唯一ID号。社保编号可以查询社保缴费情况,同时还可以办理各项社保业务。社保编号是什么?...
  • https://blog.csdn.net/u011983531/article/details/53561219 mybatis中if判断传入字符串或者Long参数不为空 ... mybatis if test非空判断数字0为什么是false http://blog.51cto.co...
  • 不太明白这两个代码之间究竟有什么区别,我只知道int main(void)的,在代码最后要加上return 0,而intmain()不用 #define PI 3.14159 #include int main() { float r,h; scanf("%f %f",&r,&h); ...
  • 大写中文数字-财务

    2013-05-28 17:15:00
    大家经常要填写的大写数字,问什么要用大写数字呢?想必很多人都不是很清楚!先看看以下两个有关大写数字的表格:1、数码与大、小写数字的对照表:数码 小写数字 大写数字0 ○ 零1 一 壹2 二 贰3 三 叁/4 四 ...
  • 在IT世界,真正的基础设施是什么?一切热门技术的基础又是什么?到底什么样的公司可以称作是真正的大数据企业?什么样的平台可以称作真正的大数据处理平台?这一切都可以在北京站获得答案。激情的能量舞蹈开场Splunk...
  • 作者前文介绍了什么是数字签名,利用Asn1View、PEVie、010Editor等工具进行数据提取和分析,这全网非常新的一篇文章,希望对您有所帮助。这篇文章将详细介绍微软证书漏洞CVE-2020-0601,并讲解ECC算法、Windows...
  • 展开全部val一个将字符串62616964757a686964616fe59b9ee7ad9431333366306530数转换成数值的函数,字符串参数中一般要含有数字,且以数字开头,val函数才会将其中的数字转换成适当的数值。它能识别小数点和进位...
  • 不知道为什么,前端显示的所有数据项都没有错,就只有时间那一项很奇怪,一串数字,而且这个数字在数据库怎么都找不到……然后我在后端从service到controller都debug了一遍,发现数据都没有错,拿的都时间啊。...
  • 不知道为什么,前端显示的所有数据项都没有错,就只有时间那一项很奇怪,一串数字,而且这个数字在数据库怎么都找不到……然后我在后端从service到controller都debug了一遍,发现数据都没有错,拿的都时间啊。...
  • valueOf()方法和parseInt()方法 , 只有在传入的字符串由纯数字构成的字符串时 , 才会返回一个整型 , 否则会抛出异常 ! valueOf() 内部实际上使用了parseInt()方法! 想要接着往下看 , 或者没有找到答案的小伙伴 ...
  • 然后在网上看到很多人胡乱分析一通,好多人都对作者的那句话“数字47在我加盟的一家学院里被认为“魔幻数字”,至今仍这样”理解错了,这句话只是说明了作者为什么选择这个数字,并没有说这个47确实有魔力。...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

参是什么数字