首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏苦逼的码农

    什么是数字签名?-- 【图解数字签名

    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 2、 ? 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 3、 ? 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4、 ? 鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。 6、 ? 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。 2、 ? 服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。 3、 ? 客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。 你可能会喜欢 1、一个故事讲完哈希洪荒攻击 2、为什么你学不会递归?

    1.7K20发布于 2019-08-05
  • 来自专栏大龄程序员的人工智能之路

    详解国密SM2数字签名

    在《解读国密非对称加密算法SM2》一文中,我讲到过非对称加密算法的用途之一就是数字签名。本文就来聊一聊国密SM2数字签名算法。 在前面的文章我说过,SM2实际上就是一种椭圆曲线(EC)密码算法,所以这里先详细说说标准的ECDSA算法,然后再说说SM2数字签名算法和ECDSA算法有哪些差别。 在现有的ECDSA算法基础上修改,增加对SM2签名算法的支持,相对比较容易,下面就说说SM2数字签名算法。 SM2数字签名算法 SM2数字签名算法在《GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。其中签名的流程为: ? 小结 本文主要阐述了SM2数字签名算法,它并不神秘,如果参考着ECDSA来实现,从技术角度讲并不是很复杂。

    14.3K20发布于 2020-04-08
  • 来自专栏韩曙亮的移动开发专栏

    【计算机网络】网络安全 : 数字签名 ( 数字签名简介 | 数字签名实现 | 数字签名功能 | 保密数字签名 )

    文章目录 一、数字签名简介 二、基于公钥的数字签名实现 三、数字签名 功能 四、保密数字签名 一、数字签名简介 ---- 数字签名 : 证明 数据 或 身份的 真实性 ; 需要有以下功能 : ① 报文鉴别 是哪个发送者 进行的签名 ; ② 防止抵赖 : 防止 发送者 否认签名 , 发送者 一旦签名 , 标记就打上了 , 无法抵赖 ; ③ 防止伪造 : 防止 接收者 伪造 发送者 的签名 ; 二、基于公钥的数字签名实现 ---- 数字签名实现方式 : 数字签名算法很多 , 公钥算法 是最简单的算法 , 即 发送者 使用 私钥加密数据 , 接收者 使用 对应的公钥 解密数据 ; ( 接收者 持有着大量公钥 ) 三、数字签名 功能 ---- 数字签名 功能 : 以 发送者 使用 私钥 加密密文 , 接收者 使用 公钥 解密密文 为例 ; ① 报文鉴别 : 发送者 持有 私钥 , 使用该私钥 加密密文 , 除了该 发送者之外 A 数字签名基础上 , 再进行公钥加密 , 就将数据保密了 , 只有对应私钥才能对其进行解密 ; 保密数字签名实现方式 : ① 加密 : 发送者 A 使用 A 的私钥 SK_A ( Secret

    2.1K00编辑于 2023-03-28
  • 来自专栏烟草的香味

    数字签名

    概述 还记得之前在介绍HTTPS的时候提到过的数字签名吗? 忘了?? 来, 复习一下. 让我们尝试还原数字签名的发展. 人工签名时代 提到了签名, 首先想到的就是每个人的签名了. 在以前. 也要引出数字签名了, 数字签名和上面上锁的思路基本一致. 既然是数字化, 那所有数据都是数字咯. 小王又借你钱了, 这次他打的欠条就是数字9(为了方便取了个简单的数). 对于一个较大的文件, 做签名是不现实, 因为几十 mb 的文件, 其二进制表示的数字大到离谱, 所以一般会通过 hash 函数将其转换到信息息摘要, 然后对信息摘要做数字签名.

    1.1K50发布于 2020-06-01
  • 来自专栏程序那些事

    数字签名

    数字签名其实就是公钥密码的反向应用,下面我们看看两种的不同: 名称 私钥 公钥 公钥密码 接受者解密时使用 发送者加密时使用 数字签名 签名者生成签名时使用 验证者验证签名时使用 谁持有密钥? 个人持有 主要需要,任何人都可以持有 数字签名的方法 通常来说数字签名一般有两种方式: 直接对消息进行签名 对消息的hash值进行签名 下面我们分别来介绍两种方式。 B将M1和A直接发送过来的消息M2进行对比,两者一致则签名成功,否则失败。 这里我们注意一下第四个步骤,签名的目的是保证消息是由只持有该密钥的人生成的,而并不是要保证消息传递的机密性。 数字签名可以替代现实生活中的签名吗? 我们讲解了怎么实现数字签名,我们也可能听说在现实生活中有电子签名这个东西。 数字签名有很多技术上的优点,不需要物理交互就可以签订合同,并可以对任何数据进行签名。 数字签名无法解决的问题 使用数字签名我们可以防止伪造和篡改,也无法防止否认。但是还需要一个大前提就是验证签名的公钥必须是真正属于发送者。

    1.2K20发布于 2020-07-08
  • 来自专栏数安视界

    非对称密钥沉思系列(2):聊聊RSA与数字签名

    从MAC过渡到数字签名相同的目的与MAC的目的一样,数字签名的目的,其实也是为了验证消息来源真实性与消息不可篡改性。消息来源真实性,在MAC中指的是,只有具有这把共享密钥的人,才可以验证通过。 RSA数字签名的基本思想RSA数字签名,基本可以概括为以下几个步骤:首先对数据进行哈希计算,得到原始数据的哈希值。使用私钥对哈希值加密,此时得到的密文就是原始数据的签名。将哈希密文与原始数据一起发送。 数字签名实践的决策点:先加密再签名 还是 先签名在加密? 在做数字签名时,消息的完整性已经不仅仅是其目的,更重要的是,我们需要验证消息来源的真实性,也就是验证发送方的身份。 MAC场景下,其共享密钥,理论上只会被两方共享,持有第三方密钥的人无法替换由真实共享密钥生成的MAC值;而在RSA数字签名的场景下,用于创建数字签名的私钥是不被共享的,而公钥确实公开且可以被任何人持有的

    3.2K4520编辑于 2022-12-12
  • 来自专栏技术知识总结

    数字签名技术

    介绍数字签名数字签名是一种用于确认数据的完整性、确认发送者身份的技术。签名主要包含两个过程:做摘要、进行非对称加密。 常见的签名算法有:RSA、RSA2。---RSA 签名算法的全称是 SHA1WithRSA:它使用的消息摘要算法是 SHA1,它使用的非对称加密算法是 RSA。 推荐使用 2048 位以上(256 字节)RSA2 签名算法的全称是 SHA256WithRSA:它使用的消息摘要算法是 SHA256,它使用的非对称加密算法是 RSA。 RSA2 签名算法强制要求 RSA 密钥的长度至少为 2048 位。数字签名的作用数字签名技术的本质不是为了加密。 数字签名进行的是非对称加密。如果数字签名进行的是对称加密的话,那么数字签名将不能防止签名者抵赖。原因就在于消息发送者 和 消息接收者拥有同样的密钥(公钥),所以消息发送方可以抵赖,否认消息是他发送的。

    1.8K20编辑于 2023-01-26
  • 来自专栏林喜东的专栏

    图说“数字签名

    前言 虽然很久以前就了解了数字签名,但之前突然被一个非程序员朋友问起什么是数字签名时,依然解释得很费力。 近日找图片素材看到Peggy_Marco大神的众多人物形象图时,有了用图解说数字签名的想法,于是决定借用大神的人物形象图,尝试用图解释一下说什么是数字签名。 数字世界里,则必须加上“数字签名”,用于证明签名者的身份;于是,小明加上签名后的第2版借条如下: image.png image.png 1.2、尝试对称加密,解决防伪造问题 确实,数字世界中 image.png 2数字签名小结 2.1、法律意义上的数字签名 《 中华人民共和国电子签名法 》第二条本法所称电子签名,是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据 2.2、数字签名要解决的问题 从电子签名法所描述的可靠电子签名来看,数字签名要解决的问题可归纳为两个: (1)对签名人身份的确认,且签名人身份不可抵赖 (2)签名人对签名内容的认可,且签名内容不可篡改

    2.9K62发布于 2019-12-30
  • 来自专栏小工匠技术圈

    数字签名-ECDSA

    【Java小工匠聊密码学】--数字签名--ECDSA 1、EC相关知识 1.1 什么是ECC  Elliptic Curves Cryptography,椭圆曲线密码编码学。 1.3 什么是ECDSA   用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为R,S。 在使用ECC进行数字签名的时候,需要构造一条曲线,也可以选择标准曲线,例如:prime256v1、secp256r1、nistp256、secp256k1(比特币中使用了该曲线)等等 1.4、ECDSA (2)处理速度快 在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快。 (3)存储空间占用小。 (4)带宽要求低。 ECDSA数字签名实现 2.1 JDK实现 package lzf.cipher.sign; import java.security.KeyFactory; import java.security.KeyPair

    3.3K30发布于 2018-08-10
  • 来自专栏浅枫沐雪

    安卓数字签名

    安装APP失败 猜想是没有数字签名的问题,一个ApK如果要安装到手机上,必须要一个数字签名,不过你是debug也好,release也好,这个数字签名来源一个叫做证书的东西,在我们debug的时候,开发工具已经帮我们生成了一个叫做 创建数字签名证书 创建证书 D. 选择需要的发布的模型 选择需要的发布的模型 E. 选择发布的版本,然后完成 选择发布的版本 F. 寻找发布的APP的位置 寻找APP位置1 寻找APP位置2 寻找APP位置3 G. 安卓6.0以上都支持啦,终于可以安心安装自己的APP啦

    82441发布于 2020-03-11
  • 来自专栏python教程

    加密与数字签名

    2.数据加密标准DES   DES算法原是IBM公司为保护产品的机密于1971年至1972年研制成功的,后被美国国家标准局和国家安全局选为数据加密标准,并于1977年颁布使用。 公开密钥算法的特点如下:   1、用加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文,或写为:DSK(EPK(X))=X     2、加密密钥不能用来解密,即DPK(EPK(X))≠ 二、数字签名   数字签名技术是实现交易安全的核心技术之一,它的实现基础就是加密技术。在这里,我们介绍数字签名的基本原理。   以往的书信或文件是根据亲笔签名或印章来证明其真实性的。 KDC返回给A的信息为(CA,CB),其 中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB称为证书(Certificate),分别含有A和B的公 开密钥。 时间戳T1和T2的作用是防止重放攻击。   最后,A将证书CA和CB传送给B。B获得了A的公开密钥PKA,同时也可检验他自己的公开密钥PKB

    60710编辑于 2024-01-10
  • 来自专栏一个无聊的人写的无聊的文章

    聊聊数字签名(上)

    假设你是一个公司的老板,由于公司发展良好,所以成立了很多分公司,你需要和分公司使用信件通信,信件需要通过多个站点才能送到对方手中,你们寄的信件有这样两个特点: 1:你给分部写的信是发号施令,内容是可以公开的; 2: 非对称加密 老板不愧是老板,于是你做了一套神奇的钥匙,这套钥匙分两类,一类称为公钥,一类你称为私钥,这两把钥匙有这样两个特性:1)公钥加密的内容有且仅有私钥能解开;2)私钥加密的内容有且仅有公钥能解开; 于是你想了个办法,说我以后再给分部发命令时会在信件里附个签名,签名生成步骤如下:1)对整封信求hash形成摘要;2)然后用私钥对摘要加密。 这样有两个好处:1)不需要对整封信加密,你的分部不需要再解密,效率高;2)坏人没有的私钥,是没办法仿冒签名,一旦修改了信的内容就会导致签名的摘要和信件的摘要不一致。 2)为保证安全平台方需要对于每一个合作者都使用不同的密钥,需要管理大量的密钥; 3)对称加密算法不能防抵赖,能够实现加密但无法验证发送者身份; 非对称加密 非对称加密算法的典型应用是数字签名,需要公开密钥和私有密钥两个密钥

    67720编辑于 2022-08-26
  • 来自专栏一个无聊的人写的无聊的文章

    聊聊数字签名(下)

    2)排序:将筛选的参数按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。 这里再额外说一下为什么需要nostr和timestamp两个参数来解决重放攻击问题: 1)假如只有nostr服务器就需要永久的缓存使用过的nostr,这个存储成本以及检索效率都是问题; 2)假如只有timestamp 完全可以满足鉴权和参数校验的需求,然而支付场景有更高的安全要求,我们再来分析MD5有什么安全问题: 1)无法防御跨接口攻击,在restful标准下同一资源的不同操作url、参数很可能相同,仅请求方法不同; 2) 1:HTTP请求方法\n 2:URL\n 3:请求时间戳\n 4:请求随机串\n 5:请求报文主体\n 其签名方式也不再是使用MD5,而是使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行 与MD5签名方式相比较: 1)请求方法和url参与签名可以解决跨接口攻击; 2)请求时间戳和请求随机串参与签名可以解决重放攻击; 3)请求报文主体不再是拼接字符串,而是json格式,可以解决不同请求签名相同的问题

    1.2K20编辑于 2022-08-26
  • 来自专栏java达人

    数字签名是什么?

    2. 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4. 鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。 6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。 7. 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 9. 苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。 因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。 11. 后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。 14. 下面,我们看一个应用"数字证书"的实例:https协议。

    1K50发布于 2018-01-31
  • 来自专栏阮一峰的网络日志

    数字签名是什么?

    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 ==================================================== 数字签名是什么? 2. ? 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 3. ? 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4. ? 鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。 6. ? 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。 7. ? 因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。 11. ? 后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。

    1.2K50发布于 2018-04-12
  • 来自专栏程序员叨叨叨

    【翻译】数字签名是什么?

    前情提要 在写上一篇《Android Keystore漫谈》时对数字证书和数字签名的区别感觉模棱两可,于是网上找了找资料发现了一篇简单易懂的文章,对证书和签名有了一个较清晰的概念: 数字签名: 信息实体经 HASH函数后得到一个摘要,摘要经过私钥加密后形成数字签名。 虽然CSDN博客上已经有人对这篇文章翻译过,但是感觉还是有必要自己翻译一遍,一来作为备份,二来也希望可以为用户们认识数字签名提供一个参考。 翻译内容 主标题:数字签名是什么? Bob给Susan回信约好午餐的时间,但是担心回信在回寄过程中被篡改,于是采用数字签名的方式。数字签名相当于Bob的私人印章,是独一无二、不可以仿冒的,可以检查信的内容有没有被篡改。 ? 那么这个数字签名是怎么签名的呢?Bob使用HASH算法对信的内容进行打乱,打乱后的内容称之为消息摘要(这一打乱的过程是不可逆的)。 ? 消息摘要经过Bob的私钥加密就变成了数字签名。 ?

    78940发布于 2018-08-28
  • 来自专栏静默虚空的博客

    消息摘要与数字签名

    2) 不可逆:消息摘要算法的密文无法被解密。 (3) 不需要密钥,可使用于分布式网络。 (4) 无论输入的明文有多长,计算出来的消息摘要的长度总是固定的。 摘要: b8-eUifaOJ5OUFweOoq08HbGAMsIpC3Nt-Yv-S91Yr4 数字签名 算法简述 数字签名算法可以看做是一种带有密钥的消息摘要算法,并且这种密钥包含了公钥和私钥。 也就是说,数字签名算法是非对称加密算法和消息摘要算法的结合体。 特点 数字签名算法要求能够验证数据完整性、认证数据来源,并起到抗否认的作用。 "数字签名匹配" : "数字签名不匹配"; System.out.println("数字签名:" + Base64.encodeBase64URLSafeString(sign)); System.out.println ("验证结果:" + result); } } 参考 《Core Java Volume2》 《Java加密与解密技术》

    1.3K80发布于 2018-01-05
  • 来自专栏安智客

    密码技术之数字签名

    数字签名不能保证消息机密性! 的确,删除了带有数字签名的借据也无法保证确实已经作废,因为你不知道是否还保留有副本,那么要作废带有数字签名的借据,可以重新创建一份相当于收据的文书,并让对方在这份文书上数字签名。 或者在消息中声明该消息的有效期并加上数字签名,证书部分内容就是如此。 数字签名能够替代签名吗? 对数字签名的攻击 除了之前介绍的利用数字签名攻击公钥密码之外,对单向散列函数的攻击,以及中间人攻击。 潜在伪造:在用RSA来解密的数字签名算法中,潜在伪造时可能的,用随机比特序列S用RSA的公钥进行加密生成密文M,那么S就是M的合法数字签名,由于攻击者是可以获取公钥的,因此对数字签名进行潜在伪造就可以实现了

    1.6K20发布于 2018-07-30
  • 来自专栏运维部落

    CA数字签名的由来

    CA数字签名的由来 上一次内容我们介绍了TLS加密原理,为什么要加密通信呢?是因为我们不希望我们的个人信息被明文传播,任何一个人只要截断我们的物理线路或者入侵到我们网络中,就能获取所有的信息。 5BE6FAC2-325B-41DB-B7FD-94FC6D0853EF 如图,如果有人冒充GOOGLE,我们怎么知道他就是真的GOOGLE呢? 这就要引入CA数字签名了。 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。 ? 鲍勃将这个签名,附在信件下面,一起发给苏珊。 ? 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。 ? 下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

    1.8K10发布于 2020-06-10
  • 来自专栏charlieroro

    使用openssl演练数字签名

    resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) } 生成密钥和数字签名方式如下 in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000 #生成CA签名的server端数字签名 的方式做域名映射 如谷歌的subj内容为: server执行如下: client执行如下: 可以使用如下方式验证证书有效性: 1.openssl s_server -msg -verify -tls1_2 \privkey -accept 18444 使用上面的命令开启一个ssl测试服务器 2.openssl s_client -msg -verify -tls1_2 -state -showcerts 查看CA的数字证书,可以看到CA为自签发的,签发者和使用者是同一人,此外在数字签名文件中可以看到CA的公钥信息,使用该公钥后续可以验证CA签发的文件的正确性 再看下server端的数字证书,该数字证书经过

    74220发布于 2020-03-24
领券