精华内容
下载资源
问答
  • 2019-04-23 10:45:10

    下边资料是关于C语言实现的一段数字加密的内容。

    main()
    {int a,i,aa[4],t;
    scanf("%d",&a);
    aa[0]=a%10;
    aa[1]=a%100/10;
    aa[2]=a%1000/100;
    aa[3]=a/1000;
    for(i=0;i<=3;i++)
     {aa[i]+=5;
     aa[i]%=10;
     }
    for(i=0;i<=3/2;i++)
     {t=aa[i];
     aa[i]=aa[3-i];
     aa[3-i]=t;
     }
    for(i=3;i>=0;i–)
    printf("%d",aa[i]);
    }

    更多相关内容
  • 主要为大家详细介绍了python实现字符串加密成纯数字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 文章目录前言数字签名对称加密非对称加密数字签名数字证书参考资料 前言 最近需要实现个艺术品买卖交易平台。由于安全性的需求,学习了各种加密方法。这里总结一下。 数字签名 Alice要和Bob互传消息,消息在公开的...

    前言

    最近需要实现一个艺术品买卖交易平台。由于安全性的需求,学习了各种加密方法。这里总结一下。

    从一个故事说起

    Alice要和Bob互传消息,消息在公开的网络上传播,不希望消息被别人看见,所以需要加密后,在网络上传送加密后的消息。只有有解密钥匙的人才能破解密文,看到消息内容。

    1. 对称加密

    最简单的方法是AliceBob制作一把钥匙的两个副本,各自保存一个。

    AliceBob在发消息前先用钥匙加密消息,接收的人用钥匙解密后查看消息就行。加密解密用同一把钥匙就是对称加密。常见的对压缩文件加密的方式就是对称加密。常用的对称加密算法有AES(最常用)、DESRC4

    https://www.liaoxuefeng.com/wiki/1252599548343744/1304227762667553

    由于对称加密算法加密的信息长度通常是固定的(如AES需要128/192/256位),但日常生活中我们给账号设定的密码通常不限长度,所以一般会先使用PBEPassword Based Encryption)算法,用随机数凑至足够长度,再进行加密。

    但是如果不能面对面接触,如何通过公开的网络将钥匙分享给另一个人,同时防止攻击者截获并且备份一把钥匙留作他用?

    2. 非对称加密

    目前被认为最安全的方法是加密和解密用两把不同的钥匙。

    Alice生成一把私钥和一把公钥,通过公开的网络将公钥传给Bob。日后发消息时,Bob先把消息用Alice的公钥加密,然后通过公开的网络传给Alice。因为加密的消息只能用Alice的私钥解锁,所以只有Alice能破解密文内容。当Alice想要给Bob传消息时,也是同样的道理。

    尽管在多人互传消息时,非对称加密所需的密钥数量远低于对称加密。但是非对称加密算法的加密速度非常慢,而且只能加密长度有限的消息。相比之下,对称加密算法速度比较快,而且加密的消息长度不限。所以一种解决办法是使用非对称加密的方式来传送对称加密的密钥,而在传消息时使用对称加密的方式。比如AES+RSA(著名的WannaCry病毒用的也是这个方法)。

    3. 摘要

    Alice想要给一份文件签名然后传送给Bob时,会先对文件使用叫做“哈希”的东西,得到一段长度固定的文件的摘要(digest)。摘要并非用于加密,而是用来确保文件内容完整无误,没有被攻击者修改过。常见的摘要算法有MD5SHA1SHA256SHA512

    4. 数字签名

    Alice随后将摘要信息使用Bob的公钥进行加密,这份加密的文件摘要就是Alice对这份文件的数字签名,确保了文件的完整无误(因为包含摘要),并且进一步保证了文件的真实性(因为摘要被Bob的私钥加密了)。

    然后,Alice将自己的数字签名,和文件一起,发送给BobBob拿到文件和加密的摘要,先使用自己的私钥对文件摘要进行解密,同时,自己也对文件内容使用“哈希”来生成一份摘要,然后通过比对两份摘要是否相同,从而确定文件是否真的是被Alice签名过的。

    https://network.51cto.com/article/628890.html

    之所以要用两步:生成摘要+加密摘要,而非直接加密原文,是因为非对称加密耗时长,加密+解密的步骤比网络传输的速度还要慢,得不偿失。

    常用的数字签名算法有:RSADSADigital Signature Algorithm,比如被比特币和Sony等公司使用的椭圆数字签名算法——ECDSA

    5. 中间人攻击

    但是即使是上面描述的最妥善的加密措施,也没法防范中间人攻击

    如果在上述过程中,有一个攻击人,偷偷使用了Alice的电脑,将Bob的公钥换成了自己的公钥。日后Alice`发信息时,就会使用攻击人的公钥加密信息,从而信息会被攻击人收取。

    (另一种中间人攻击是,攻击人截获Alice的发给Bob的消息,然后假扮AliceBob发消息,然后在BobAlice发消息时做相同的事,从而破获密钥。)

    6. 数字证书

    那么,Alice如何确认自己使用的公钥是Bob的公钥呢?

    Bob可以去找证书中心(certificate authority,简称CA),为自己的公钥做认证。证书中心用自己的私钥,将Bob的公钥以及Bob的一些个人信息一起,加密生成一段文本,发给Bob。这个文本就是证书中心颁发给Bob的数字证书。

    具体流程如下图。

    https://network.51cto.com/article/628890.html

    这里有个问题:证书中心使用自己的私钥来加密数字证书,而Alice使用Bob公钥来加密发给Bob信息,为什么截然相反?

    因为使用对方的公钥加密信息,能确保信息只被对方破解。而使用自己的私钥加密信息,能够确保收到信息的所有人,都知道信息是由自己加密的。证书中心需要的是让所有人都知道,证书是由自己颁发的。

    以后,Bob只需要在传送文件和数字签名(也就是加密的文件摘要)的同时,也附上自己的数字签名。Alice收到后,首先使用电脑出厂时就已经安装的证书中心的公钥,来解密数字签名,然后获取Bob的公钥,随后Alice再使用Bob的公钥,来解密文件附带的Bob的数字签名,就能确保文件的准确无误,而且能确定文件是被Bob签名过的。

    HTTPS协议就用到了数字证书。

    https://www.liaoxuefeng.com/wiki/1252599548343744/1304227968188450

    参考资料

    展开全文
  • 数字信封加密

    千次阅读 2021-12-29 23:27:53
    Hash 类的加密是单向的不可逆转的加密加密后的内容是 16进制 的 Hash 串,我们只能通过彩虹表去反推明文内容,所以只要加上盐值或者多套两层加密,就非常难逆向破解出来了。因此,Hash 加密通常会用于用户的密码...

    OpenSSL 是目前 PHP 甚至是整个开发圈中的数据加密事实标准,包括 HTTPS/SSL 在内的加密都是它的实际应用, OpenSSL 提供了对称和非对称加密的形式,也就是我们日常中最普遍的两种加密方式。

    那么,它和 Hash 类的加密有什么不同吗?Hash 类的加密是单向的不可逆转的加密,加密后的内容是 16进制 的 Hash 串,我们只能通过彩虹表去反推明文内容,所以只要加上盐值或者多套两层加密,就非常难逆向破解出来了。因此,Hash 加密通常会用于用户的密码保存上,即使数据库泄露了用户密码也依然是安全的。而 OpenSSL 这种类型的对称/非对称加密则是可以通过某个关键字或者证书来进行正向加密和逆向解密的,原文都是可以得到的。下面我们就来具体说说对称和非对称加密的问题。

    对称加密,通常是通过一个 key(密钥) 来对原文进行加密。也就是说,不管是服务端还是客户端或是其它的任何对端,在两端通信时,它们传输的加密内容都必须要使用相同的 key 来进行加/解密操作。两端都必须同时保存这样一个 key 。估计大家也想到了,现在不管是 web 开发还是 app 开发,代码都是可以反编译查看到源码的。如果使用对称加密的话,key 是很容易被获取到的。不过,对称加密的好处是速度非常快,不消耗资源。

    非对称加密则是两端持有不同的 key 。就像我们平常见到的最多的 https 证书,就是分别有 公钥 和 私钥 这两个概念。一般我们会使用 公钥 进行加密,然后使用 私钥 进行解密,通常 公钥 都是公开并发送给对方的,而私钥是保存在自己这里的。也就是说,对方向我们发送数据的时候,使用我们给它的公钥将数据进行加密,数据在传输过程中就非常安全,因为中间并没有别人有可以解密这段数据的私钥,直到我们接收到数据后使用自己的私钥进行解密后就得到了原文数据。由于两边的密钥内容并不相同,所以相对于对称加密来说,非对称加密的安全性要高了很多。虽然说非对称加密的算法和复杂度都比对称加密提升了好几个档次,但相对于对称加密的优势,在非对称加密中,速度和性能也就成了它的瓶颈,特别是数据量大的情况下。另外,非对称加密的数学原理是 大数难分解 问题,也就是越大的数越难进行因子分解。

    对称加密常用的算法有:AES 、DES 、3DES 、 IDEA 、 RC2 、 RC5 等,比较常用的是 AES 和 DES 。

    非对称加密常用的算法有:RSA 、Elgamal 、ECC 等,RSA 非常常用和普遍,SSL 和一些证书算法都是基于 RSA 。

    那么,我们有没有折衷的方式来使用这两种加密能力呢?当然有了,并且也是非常经典的一种技术:数字信封

    其实意思非常简单,就是利用这两种加密方式各自的优点。非对称加密的安全性高,但速度慢,而且数据量越大速度越慢,那么我们就用它来加密对称加密的 key ,通常这个 key 不会很大。然后实际的数据实体使用这个对称加密的 key 来进行对称加密提升速度。这样,我们发送给客户端时,就包括两个内容,一个是非对称加密进行加密的 key ,一个使用对称加密进行加密的数据内容。客户端拿到信息后,首先使用非对称加密的密钥解码出对称加密的 key ,然后再使用这个 key 来解密最终的数据内容。

    在这里插入图片描述

    展开全文
  • 你要说这个,那我可来劲了,于是乎从加密数字签名一直讲到了数字证书。。。终于把女朋友讲睡着了,独自写下这篇文章。 正文 如果你能非常清晰的回答出以下问题,可以直接拉到最下面帮我点个赞~,把时间用去陪陪女...

    前言

    这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视频。

    在一旁玩手机的女朋友突然问”你知道数字证书是来干啥的不,为啥浏览器提示证书不可信?”

    你要说这个,那我可来劲了,于是乎从加密、数字签名一直讲到了数字证书。。。终于把女朋友讲睡着了,独自写下这篇文章。

    正文

    如果你能非常清晰的回答出以下问题,可以直接拉到最下面帮我点个赞~,把时间用去陪陪女朋友:

    1. 非对称加密中公私钥都可以加密,那么什么时候用公钥加密,什么时候用私钥“加密” ?

    2. 什么是数字签名,数字签名的作用是什么?

    3. 为什么要对数据的摘要进行签名,而不是直接计算原始数据的数字签名?

    4. 什么是数字证书,数字证书解决了什么问题?

    这篇文章,主要围绕数字签名数字证书的原理以及它们的作用展开。

    争取做到让不具备任何密码学基础知识的同学都能听懂,所以在这里需要先对齐一些加密相关的概念 。

    1. 什么是加密

    加密就是对明文数据按某种特殊算法进行处理,使其成为不可读的一段代码,通常称为“密文“, 密文通过”密钥“解密后还原出原来的明文,通过这样的途径可以达到保护数据不被非法人窃取、阅读的目的。

    定义简单吧?那来看个题,考虑以下哪些属于加密方法:

    • AES
    • RSA
    • MD5
    • BASE64
    • SM4

    这几种都是日常开发中常用的数据编码技术,但是只有 AES、RSA、SM4 才能算是加密方法。

    为什么呢?一个区分的简单方法就是看编码后的数据是否还能还原,能还原的是加密。

    MD5 实际上是对数据进行有损压缩,无论数据有多长,1KB、1Mb 还是 1G,都会生成固定 128 位的散列值,并且 MD5 理论上是不可能对编码后的数据进行还原的,即不可逆。

    MD5 因为其具有不可逆性、单向恒定性(相同的数据多次计算值不变)被广泛应用于文件完整性验证、口令加密以及接下来会讲到的数字签名中。

    至于 BASE64 是否算做加密方法,仁者见仁。在这里不下结论,因为 BASE64 编码不需要密钥,且编码后的字符串任何人都可以解码出原串,所以一般不认为是加密方法。BASE64 常用来做转码,把二进制字节序列转化为 ASCII 字符序列。

    2. 加密算法的分类

    加密算法按照加解密使用的密钥是否相同,可分为:

    • 对称加密(Symmetric Cryptography)
    • 非对称加密(Asymmetric Cryptography)

    1. 对称加密

    对称加密是指加密和解密时使用同一个密钥。

    2. 非对称加密

    非对称加密是指加密和解密使用不同的密钥,这两个密钥分别叫做「公钥」、「私钥」。

    公钥是可以公开给所有人的,而私钥需要自己保密的。

    公钥加密的数据只能用私钥解密:

    同理,私钥“加密”的数据只能用公钥“解密”:

    大家注意到没,我对 私钥“加密” 这里打了引号,为什么呢?

    因为私钥不是用来加密的,准确的说法应该是 「私钥签名,公钥验签」

    这个问题很多同学都存在误解,认为公私钥都可以用于加密。

    实际上不是的,至于为什么,后面讲完签名我会解释的。

    3. 故事开始

    为了讲这个故事,小北请来了密码学中常用的学术情侣,Alice 和 Bob,以及窃听者代表 Eve。

    我们从 Alice、Bob 约会的故事展开,来讲讲其中暗藏着哪些危机,又是如何一步步化解的。

    3.1 第一回合

    九月,一个夜黑风高的晚上,Bob 想约 Alice 出来玩,于是给 Alice 发了一封邮件:
    明文通信

    但我们都知道网络是不可信的,并且由于消息在网络中是明文传输的,所以黑客可以轻易的截获、篡改甚至冒充 Bob。

    来,我们看看黑客 Eve 是怎么干的:

    黑客窃听伪造

    瞧,Eve 轻易的拿到了邮件内容 (窃听),并且修改了邮件内容 (篡改),甚至说他可以随时冒充 Bob 给 Alice 发送邮件 (伪装)

    如果上图中 Eve 伪造的内容被 Alice 接收到了,那么后果可想而知。

    现实世界中,我们每天都在通过网络进行聊天、转账、浏览不存在网站。

    如果都是这样明文传输数据,显然毫无安全感。

    3.2 第二回合

    既然我们不能明文传输,那么 Bob 和 Alice 提前商量好密钥,使用对称加密对邮件内容加密不就好了~

    对称加密

    现在 Bob 发送的邮件都使用和 Alice 提前商量好的密钥加密后再传输。

    由于没有密钥,Eve 就算截获到数据也无法获取邮件的内容,也没法篡改和冒充 Bob。

    因为篡改后的数据必须使用密钥再次加密 Alice 才能正确解密。

    那么只要 Bob 和 Alice 能够保证 密钥不泄露,整个通信就是安全的。

    如果密钥泄露,被中间人截获,那么就等同于明文通信。

    所以我们不能把安全性寄托在人上面。

    并且这里也存在一个问题,如果两个人不能线下见面, 如何在网上安全的交换密钥呢?

    这似乎是无解的,因为交换密钥的时候我们必须明文通信,不然对方根本看不懂。但是明文交换即意味着可能泄露。

    但是别忘了我们的密码学工具箱里还有一个好东西— 「非对称加密」

    Bob 和 Alice 各自生成一对公私钥,因为公钥本来就是公开的,即可以被任何人获取,所以可以通过网络明文交换公钥。

    然后使用公钥加密邮件内容后发送给对方,接收者使用自己的私钥即可解密。完美~

    3.3 第三回合

    来看看,在非对称加密体系下,Bob 如何给 Alice 发消息的。

    首先 Alice 需要先生成一对公私钥,私钥只能 Alice 自己知道,公钥是可以让任何人都知道的,因此可将公钥直接发送给 Bob,就算被截获也无所谓。

    非对称加密

    Bob 使用 Alice 的公钥加密邮件内容,加密后的内容只能由 Alice 的私钥解密,所以就算 Eve 截获也是徒劳。

    反之,如果 Alice 想给 Bob 回信,就需要用 Bob 的公钥加密后发送。

    这就解决了密钥交换问题,也保证了邮件内容不会泄露。也就是说现在可以防窃听

    3.4 如何证明 Bob 是 Bob

    不知道你注意到没有,这里也存在另外一个问题:

    Eve 也可以使用 Alice 的公钥冒充 Bob 给 Alice 发邮件啊,因为 Alice 的公钥本来就是公开的,任何人都可以获得。

    由于 Eve 也可以获得 Alice 公钥,所以没法防止 Eve 伪造篡改,并且对于 Alice 而言,她无法分辨出邮件到底是 Eve 发的还是 Bob。

    所以这个问题的本质就是 「Alice 如何确认邮件来自于 Bob」

    那么在生活中,我们如何做这件事呢?

    那就是让 Bob 在纸上签名并且按手印,因为指纹和字迹是 Bob 独有的,其它人很难伪造。

    所以我们需要在计算机中引入类似的机制:

    即只有 Bob 自己能够产生的独一无二的标志,并且其它人能够验证这个标志确实是属于 Bob的。

    这就是我们今天要讲的主题—「数字签名」。

    还记得什么是 Bob 独有的吗?

    对,就是 Bob 自己的私钥,Bob 用自己的私钥对邮件内容计算一个「签名」,将「签名」和邮件内容一起发送出去,接受者 Alice 可以使用 Bob 的公钥验证这个签名是否正确,这就叫「验签」。

    如果不是 Bob 的私钥计算的签名,那么 Alice 用 Bob 公钥验签将会出错。

    可以看到, Eve 试图使用自己的私钥计算签名然后发送给 Alice, 但是 Alice 使用 Bob的公钥进行验签时将会出错!

    那么 Eve 可能篡改内容并冒充 Bob 的签名吗?不可能!因为内容发生改变时,对应的签名也需要重新计算,而签名的生成依赖于私钥,只要 Bob 的私钥不泄露,签名就不会被冒充。

    啊啥?你说万一私钥泄露了怎么办?那就当我没说…

    所以使用数字签名,我们能够鉴别消息的发送者,也就是说黑客无法伪装发送者进行发送数据,也无法篡改。

    注意:

    可以看出我们这里数据是明文传输的,存在窃听风险。但是我们为了阐述数字签名机制是如何运转的,故意将保证信息机密性的机制省略了。

    如果想要保证数据的机密性,我们常见的做法是,通信双方通过非对称加密安全交换对称加密的密钥,后续通信过程的数据都使用对称加密保证数据机密性。

    并且「签名」的作用本身也不是用来保证数据的机密性,而是用于验证数据来源的防止数据被篡改的,也就是确认发送者的身份。

    一般而言,我们不会直接对数据本身直接计算数字签名,为什么呢?

    因为数字签名属于非对称加密,非对称加密依赖于复杂的数学运算,包括大数乘法、大数模等等,耗时比较久。

    如果数据量大的时候计算数字签名将会比较耗时,所以一般做法是先将原数据进行 Hash 运算,得到的 Hash 值就叫做「摘要」。

    「摘要」就像人的指纹一样,可以代表一个人,只要内容发生了改变,计算出来的摘要也应该变化。

    「摘要」最好是不可逆转的,一般使用开头提到的 MD5 作为 Hash 函数,MD5 输出的结果固定位 128 位。

    为什么「摘要」最好是不可逆转的?

    因为既然 Alice 可以用 Bob 公钥解开签名,那么理论上其它人,比如 Eve 也可以使用 Bob 公钥解开签名拿到数据。

    所以我们最好对数据的「摘要」进行签名,这样,Eve 就算解开签名,拿到的也是「摘要」,如果摘要是不可逆转的,也就是无法从摘要反推出原文,也就达到了保密的作用。

    发送者使用私钥对「摘要」计算数字签名。那么接收者如何验证呢?

    接受者 Alice 收到后,取下数字签名,同时用 Bob 的公钥解密,得到「摘要1」,证明确实是 Bob 发的

    ( 画外音:如果使用 Bob 的公钥验证签名出错,那么签名一定不是 Bob 的私钥生成的)

    再对邮件内容使用相同的散列函数计算「摘要2」,与上面得到的「摘要1」进行对比,两者一致就说明信息未被篡改。

    这样两步分证明发送者身份和保证数据未被篡改。

    3.5 这就够了吗?

    Bob 和 Alice 现在可以依赖于对称加密进行保密通信,也可以依赖于数字签名验证消息是否是对方发送的。

    但是这一切的根基是建立在 Alice 持有的公钥确实是 Bob的,反之亦然。

    什么意思呢?

    试想,Eve 如果将自己的公钥冒充 Bob 发送给 Alice,然后 Alice 保存了下来,那以后凡是 Bob 发送的消息,反而会验证签名失败,被当做冒充者。
    那你可能会问,为什么 Eve 可以将自己的公钥发送给 Alice,而 Alice 毫不知情呢?
    伪造公钥

    看!我们又回到了最初的起点,只不过这次被篡改的是公钥,之前是消息本身。

    因为 Bob 的公钥是直接通过网络发送给 Alice的,所以 Eve 才可以在这一步做手脚,进行篡改,将自己的公钥冒充 Bob 发送给 Alice,也就是发送公钥这一步没有做到:

    • 防篡改
    • 防冒充

    防篡改怎么和防冒充怎么实现的呢?

    我们前面讲了,就是靠数字签名! 但是数字签名需要接受者持有发送者公钥,才能进行验签。

    而我们现在处理的是分发公钥这一步,所以…死锁了。这像是先有鸡还是先有蛋的问题

    现在的问题就是「Bob 无法证明它自己是 Bob」。

    这个是不是似曾相识,以前去办事的时候经常被要求出具「我妈是我妈」这类证明。但是我们自己说“我妈就是我妈”,人家根本不会信呀,需要一个可信第三方出具证明,比如派出所。

    那么「Alice 如何才能确认 Bob 发送给自己的公钥确实是 Bob 的,而没有被篡改?」

    在只有 Alice 和 Bob 两人的情况下是没法验证的。

    所以,我们这里也需要一个第三方帮 Bob证明 「Bob 的公钥就是 Bob 的公钥」,有点绕口令那感觉了~

    3.6 数字证书

    为了解决这个问题,就引入了「数字证书」,什么叫数字证书呢?

    百度百科:

    数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。

    因此数字证书又称为数字标识。数字证书对网络用户在交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。

    看了这个描述,是不是感觉还是云里雾里,还是我用大白话来说吧~

    只要你理解了前面的数字签名,就能理解这里的数字证书,因为我把数字证书叫做「公钥的数字签名」。

    为什么呢?我们引入数字证书的目的是为了保证公钥不被篡改,即使被篡改了也能识别出来。

    而防篡改的方法就是数字签名,但是这个签名不能我们自己做,原因说过了,因为我们的公钥还没分发出去,别人无法验证。

    所以只能找可信的第三方来帮我们签名,即证书颁布机构(CA),CA 会将:证书的颁布机构、有效期、公钥、持有者(subject)等信息用 CA 的私钥进行签名。

    并且将签名结果和这些信息放在一起,这就叫做「数字证书」。

    这样,Bob 就可以去 CA 申请一个证书,然后将自己的证书发给 Alice,那么 Alice 如何验证这个证书确实是 Bob的呢?

    当然是使用 CA 的公钥进行验签。

    注意:

    CA 的公钥也是需要使用证书来分发的,所以 Alice 的电脑必须安装 CA 的证书,证书里包含了 CA 的公钥。

    收到 Bob 发过来的数字证书后,Alice 使用 CA 的公钥进行验证,验证通过即证明这确实是 Bob 证书,也就可以使用证书中包含的 Bob 的公钥,按照之前讨论的流程进行通信。

    那么 Eve 是否可以在中途篡改 Bob 的证书呢?

    答案是不行,因为证书的信息使用 CA 的私钥进行签名,只要 Eve 修改了任何一个 Bit 都会导致最后签名验证不通过。

    那 Eve 可不可以修改证书信息后自己重新计算一次证书的数字签名呢?

    也不行,因为证书的数字签名计算依赖于 CA 的私钥,Eve 是拿不到 CA 的私钥的。

    如果拿到了,说明什么?整个世界都是不可信的。

    3.7 数字证书长啥样

    这是我电脑中的自带的证书:

    电脑自带证书

    可以看到,包含了证书持有人的公钥和证书的签名。

    另外,证书颁发机构是有层级关系的,下级 CA 的证书是需要由上级 CA 签名的。

    换句话说一定存在根证书颁发机构,那么他们的证书是由谁签名的呢?

    答案是自签,自己给自己认证。

    这是我电脑中的一个自签的根证书颁发机构:

    自签的根证书机构

    为什么根证书可以自签,谁来保证安全?

    你把钱存在银行,你会担心吗?我们基于对国家的信任,才信任银行,这就是信任链的基础!我们思考问题应该是分层的,如果不认可一个统一的基础,一直套娃下去,那么问题就无解。

    那还有个问题,如何保证根证书的可靠性?
    这是操作系统和浏览器预装的,由微软、苹果等操作系统厂商来选择根证书。

    3.8 证书不可信?

    那么什么情况下浏览器会提示 “证书不可信” 呢?

    根据我们上面的分析,下面是可能的原因:

    1. 证书不是权威 CA 颁发

    有些企业为了贪图便宜使用盗版的证书,没有经过 CA 认证。也就是无法使用浏览器内置 CA 公钥进行验证。

    1. 证书过期

    上面说了,证书里有一项就是有效期,一般就是一年或者两年的时间。如果证书过期,那么浏览器就会提示“证书不可信”

    1. 证书部署错误

    可能是服务器证书部署出错,比如证书与域名不匹配,因为证书里有一项是持有人信息的。

    好了,饶了一大圈,Bob 终于可以安全的向 Alice 发出前往红树林的邀请了~

    附录

    QA

    现在我们来回答文章开头提出的一些问题:

    1. 非对称加密中公私钥都可以加密,那么什么时候用公钥加密,什么时候用私钥“加密” ?

      • 加密场景,那么肯定希望只有我才能解密,别人只能加密。即公钥加密,私钥解密。

      • 签名场景,既然是签名,就希望只能我才能签名,别人只能验证。即私钥签名,公钥验签

    2. 什么是数字签名,数字签名的作用是什么?

      • 数字签名就是使用私钥对数据摘要进行签名,并附带和数据一起发送。

      • 可以起到防篡改、防伪装、防否认的作用。

    3. 为什么要对数据的摘要进行签名,而不是直接计算原始数据的数字签名?

      • 数据可能比较大,签名是使用非对称加密算法,比较耗时
      • 防止第三方使用公钥解开签名后,拿到原始数据
    4. 什么是数字证书,数字证书存在解决了什么问题?

      • 数字证书就是由 CA 机构使用自己私钥,对证书申请者的公钥进行签名认证。

      • 数字证书解决了如何安全分发公钥的问题,也奠定了信任链的基础。

    絮叨

    大家如果觉得写得不错,可以帮小北,点个「关注」,点个赞~

    你们的三连就是我创作的最大动力!

    我是小北,一个每天在电脑前敲键盘的硬核男人,我们下期见!

    欢迎大家关注我的公众号「编程指北」,每周最先更新原创好文。

    展开全文
  • 1048 数字加密(Python)

    千次阅读 2019-04-06 21:05:21
    首先固定加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字...
  • 本次将从通信演变历史的角度出发,步步阐述概念及其作用。 通过本篇文章,你将了解到: 1、明文通信 2、密文通信 3、对称加密 4、非对称加密 5、消息摘要 6、数字签名 7、CA与数字证书 8、总结 1、明文通信 大...
  • HTTPS加密原理,搞懂什么是对称加密、非对称加密、证书、数字签名
  • 密钥加密技术和数字签名

    千次阅读 2020-02-17 13:31:41
    .密钥加密技术 密钥加密技术是为了保证在开放式环境中网络传输的安全而提供的加密服务。通常大量使用的两种密钥加密技术是:私用密钥(对称加密)和公共密钥(非对称加密)。 ...
  • 、非对称加密 1、简单介绍 非对称加密就是有两把秘钥,任何加密需要用另把才能解密,我们一般会用公钥、私钥来表明。通过这个说法我们应该就能感觉到这种非对称加密应该更复杂,同时处理速度也比对称...
  • 第十八天:对称加密-非对称加密-数字签名-证书 对称加密 对称密码中,加密用的密钥和解密用的密钥是相同的 如何解密 DES加密 DES是种将64bit明文加密成64bit密文的对称加密算法,密钥长度是56bit 规格上来说,...
  • RSA 加密过程是公钥加密、私钥解密,而数字签名、数字证书都是私钥签名(可以理解为加密),公钥签名验证(可以理解为解密)。公钥和私钥都可以用来加密或解密,只要能保证用 A 加密,就用 B 解密即可,至于 A 是...
  • 数字加密 (15 分)

    千次阅读 2019-02-27 10:43:21
    方法是将该数每位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位...
  • 时间遇到过RSA这里把前时间学到的东西做一些总结: RSA RSA是目前为止应用最为广泛的非对称加密算法。非对称加密算法简单的说就是分成公钥和私钥。加密和解密采用不同的算法实现,这样的好处是不需要像传统...
  • 1. 加密类型 1.1 对称加密 DES AES 1.2 非对称加密 RAS 2. 报文完整性 3. 数字签名 4. 秘钥分发中KDC 5. 认证中心CA
  • Encryption:加密。 Signing:签名。 Certification:认证其他子密钥或 uid。 Authentication:身份... 个主密钥可以绑定多个子密钥,平时加密解密使用的都是子密钥,主密钥只有在某些特定的情况下才使用的,...
  • 1 HTTPS 概述 HTTPS(全称:Hyper Text...即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https: URL表
  • 信息安全技术主要包括: 信息加密技术 ...数字签名(又称公钥数字签名、电子签章)是种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常
  • 数字摘要也称消息摘要,由一个单向hash函数对一段消息进行计算产生,不同的明文生成的密文总是不同的,而同样的明文的密文一定相同。 消息摘要能够验证消息的完整性:如果消息在传递的途中改变了,接收者通过对...
  • 密码学和加密数字货币的简介

    千次阅读 2020-05-17 10:16:04
    所有货币都需要一些方法来控制供应,并强制执行各种...如果Alice说服Bob,她给他数字货币,例如,她不应该说服卡罗尔,向卡罗尔支付同数字货币。与法定货币不同的是,加密货币的安全规则需要纯粹在技术上执行,
  • 键盘输入数字进行加密(简单的)

    千次阅读 2019-01-12 17:32:39
    题目: 某个公司采用公用电话传递数据信息...最后将第位和最后数字交换。 请任意给定个小于8位的整数, 然后,把加密后的结果在控制台打印出来。 public static void main(String[] args) { //创建键盘输入 ...
  • 时间遇到过RSA这里把前时间学到的东西做一些总结:RSARSA是目前为止应用最为广泛的非对称加密算法。非对称加密算法简单的说就是分成公钥和私钥。加密和解密采用不同的算法实现,这样的好处是不需要像传统对称...
  • 数字加密和HTTPS详解笔记

    千次阅读 多人点赞 2020-08-03 09:56:14
    最近在做Blog迁移的时候,梳理了一些Web有关的技术细节,整理下来,以作备忘。 数字加密 术语 密钥:改变密码行为的数字化...对称加密比较简单,就是客户端和服务器共用同一个密钥,该密钥可以用于加密一段内容,同.
  • 出处:... 作者:无恙 这篇文章简写得太好了,对网络通信中的密码学问题不是很懂的都可以看看 /**************************************膜拜大佬中*******************************************...
  • 若该文为原创文章,未经允许不得转载 原博主博客地址:...本文章博客地址: 目录 开发笔记之数字证书():数字证书介绍 前话 数字证书签名基本问题 什么是代码签名证书? 哪些人需要代码...
  • 公钥加密数字签名、消息认证

    千次阅读 2018-05-11 09:23:34
    一、网络是开放的,在上面要发送一段内容,随时可能被其他人拦截看到,因此需要加密。 最初想到的是对称加密,可以通过同一个密钥加密,也可以通过同一个密钥解密。(比如加密字符串,加密时每个字符ASCII码同时加2...
  • 数字签名非常普遍: ...该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出
  • 深入理解加密、解密、数字签名和数字证书    随着电子商务的迅速发展,信息安全已成为焦点问题之,尤其是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活动,公开密钥...
  • 1、基础知识  这部分内容主要解释一些概念和术语,... 加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。  解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程...
  • 、对称加密 对称加密加密和解密使用相同密钥的加密算法,也称为单密钥加密。他的特点是算法公开、计算量少、加密速度快,对于同样大小的传输对象,对称加密效率通常为非对称加密的千倍左右,因此通常被广泛...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,214
精华内容 50,485
关键字:

如何加密一段数字