数字签名

常用消息摘要算法介绍

a 夏天 提交于 2020-01-02 09:04:50
消息摘要算法 介绍: 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。 消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。(摘要可以比方为指纹,消息摘要算法就是要得到文件的唯一职位) 特点: 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。 只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息(不可逆性)。 好的摘要算法,没有人能从中找到“碰撞”或者说极度难找到,虽然“碰撞”是肯定存在的(碰撞即不同的内容产生相同的摘要)。 应用: 一般地,把对一个信息的摘要称为该消息的指纹或数字签名。数字签名是保证信息的完整性和不可否认性的方法。数据的完整性是指信宿接收到的消息一定是信源发送的信息,而中间绝无任何更改;信息的不可否认性是指信源不能否认曾经发送过的信息。其实,通过数字签名还能实现对信源的身份识别(认证),即确定“信源”是否是信宿意定的通信伙伴。 数字签名应该具有唯一性

java 加密之消息摘要算法

雨燕双飞 提交于 2020-01-02 09:04:25
简介 消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,即单向加密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。 消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。由于其加密计算的工作量相当巨大,所以以前的这种算法通常只用于数据量有限的情况下的加密,例如计算机的口令就是用不可逆加密算法加密的 用途 一般地,把对一个信息的摘要称为该消息的指纹或数字签名,数字签名是保证信息的完整性和不可否认性的方法。消息摘要算法适合作为数字签名算法,也是数字签名的核心算法。 分类 MD(Message Digest,消息摘要) SHA(Secure Hash Algorithm,安全散列算法) MAC(Message Authentication Code,消息认证码) …… MD MD算法包括MD2、MD4和MD5,摘要长度都是128位,都是单向加密,其中JDK自带MD2和MD5。 MD5的 java 实现 public class MyMD5 { public static void main(String[] args) { String str = "i am guo feng"; try { //获取MD5算法实例 MessageDigest md = MessageDigest.getInstance("MD5"); /

2.数字签名-SSL证书格式

泄露秘密 提交于 2019-12-30 14:21:55
一.SSL证书格式分类 1. .PFX /.P12,二进制格式,同时包含:证书 + 私钥(密码保护)。 (1)公钥在证书里。 (2)window系统将 证书(公钥) + 私钥放在一起,保存在.pfx文件中。 (3)导入.pfx证书时,默认会导入私钥,只是密钥不能再次被导出。如果导入选项中勾选“标志此密钥为可导出的密钥。这将允许你在稍后备份或传输密钥”,则密钥导入后还可以再次被导出,导出密钥时需要输入密码。 myidea: *??银联导出要给我们的这个pfx证书时,一定勾选了密钥可导出选项,否则我们无法导出pfx文件中的私钥,对吗? *??当我们拿到pfx文件时,因为pfx证书文件中有 私钥 + 证书(公钥),当我们不想把公钥给别人时,有2种选择:一是在自己电脑上导入此pfx文件时,不勾选可导出密钥,则本地电脑再次导出一个pfx文件时,发送给第三方,第三方就无法获得私钥,只能从pfx文件中导出公钥了吗?第二种方式是,从pfx文件中获取到cer文件,将此cer文件(公钥)给第三方? 3. .CER,二进制格式,只保存:证书(不保存私钥)。 (1)可能是PEM编码 / DER编码,常用DER编码。 (2)常见于windos系统。 4. .DER :二进制格式,只保存:证书(不保存私钥)。 5. .CRT,二进制格式 或 文本格式,只保存:证书(不保存私钥)。 (1)可能是PEM编码 /

C#编程总结(八)数字签名

自古美人都是妖i 提交于 2019-12-27 16:58:24
C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅、签名和盖章,由于公司业务开展,跨地域、跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄、传真等方式来解决,但是耗费时间、人力、物力。在网络化日益深入的今天,需要领导审批、签字盖章的东西越来越多,时间也越来越紧迫,数字签名的出现,很好了解决了这一问题。推动了互联网及跨国集团的发展。 数字签名 1、概念 数字签名基于哈希算法和公钥加密算法,对明文报文先用哈希算法计算摘要,然后用私钥对摘要进行加密,得到的值就是原文的数字签名。 数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。 一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。 可以由下图表示电子签名的用处: 2、工作原理 流程图如下:   数字签名的使用一般涉及以下几个步骤,我们通过安全电子邮件为案例进行介绍   (1)发件人生成或取得独一无二的加密密码组,包括私钥和公钥。   (2)发件人书写电子邮件   (3)发件人用安全的摘要算法获取电子邮件的信息摘要 (4)发件人再使用私钥对信息摘要进行加密,即可得到数字签名。     (5)发件人将数字签名附在信息之后.   (6)发件人将数字签名和信息(加密或未加密)发送给电子收件人.   (7

数字签名和数字证书

烈酒焚心 提交于 2019-12-24 14:04:18
到底什么是“数字签名”(digital signature)和“数字证书”digital certificate)?对这些问题的理解,一直模模糊糊,很多细节搞不清楚。 今天,读完一篇 通俗易懂的文章 后,思路豁然开朗。为了加深记忆, 这篇文章的翻译版 记录如下。 原理 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4. 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。 5. 鲍勃给苏珊回信,决定采用“数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。 6. 然后,鲍勃使用私钥,对这个摘要加密,生成“ 数字签名 ”(signature)。 7. 鲍勃将这个签名,附在信件下面,一起发给苏珊。 8. 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 9. 苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。 10. 复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时

数字签名数字证书

浪子不回头ぞ 提交于 2019-12-24 13:05:32
1.用一套图片来说明数字签名和证书 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。公钥是对外公开的,私钥只有鲍勃自己知道。 2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把 ------------------------------------------------------------------------- 3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 ----------------------------------------------------------------------------- 4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。 5.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。 6.然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。 7.鲍勃将这个签名,附在信件下面,一起发给苏珊。 8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。 10.复杂的情况出现了

总结数字签名实现身份验证

老子叫甜甜 提交于 2019-12-23 18:31:17
消息篡改和不可抵赖性 TCP协议确保数据能够正确发送到通信双方,加上数据加密算法保证数据安全传输,但是在HTTP应用中通信双方通常不清楚发送方的身份,尤其在客户端服务器通信下,通常一个服务器会处理多个客户端连接,结合前一篇日志讲到的密钥协商,对于服务器来说,它不需要知道客户端是谁,在建立连接,协商好密钥后,只要接收到的HTTP请求格式正确,数据解密无误后便会发送相应信息,对于客户端来说也是一样。表面上来看,客户端和服务器端只要数据能对应加密解密,正确,安全地发送到对方处,似乎就没什么问题。没错,数据加密保证了数据的机密性,消息验证码MAC算法保证了数据的完整性,接收方能够确保接收到的数据是发送方的原始数据,没有被篡改过,但是没有解决的问题是身份验证问题,无法确保和你通信的,发送数据的对方,是你正确的通信对象,这会出现的一个问题就是,第三方可以冒充你的通信方,给你发送消息。 在对称加密中,如果密钥泄露了,那么别人就可以使用你们的密钥进行加密解密,或者冒充通信方给你发消息,当你收到一条消息后,使用密钥解密,解出可读可理解的明文时,你可能就会误认为这条消息就是你的目标通信方发来的。在公开密钥算法下,公钥参数甚至可以是公开的,不需要对其做任何保护,在使用如DH密钥协商算法时,目的是协商出解密私钥,即使公钥,p,g等参数泄露了也没关系。公钥只是加密时采用到,这就导致了由于公钥公开

一文读懂数字签名

不想你离开。 提交于 2019-12-23 12:30:03
数字签名:数字签名被认为是对手写签名的数字化模拟。 手写签名的重要特征为: 1、自己的签名只有自己可以制作; 2、自己的签名可以由其他任何人验证有效性; 3、自己的签名只对某一特定文件发生联系,不能用于支持其他文件; 在说明数字签名之前,需要了解密码学的一些基本概念: 明文:消息的初始形式 密文:加密后的形式 密钥:指某个用来完成 加密、 解密、完整性验证等密码学应用的秘密 信息。 如果我们将明文记为P,密文记为C,密钥记为K,加密算法记为E,解密算法记为D,则C=E§,P=D©;则要求密码系统满足P=D(E§)。 对称加密以及非对称加密: 对称加密算法指的是在加密和解密的时候使用的是同一个秘钥,同一个密钥可以同时用作信息的加密和解密。 需要密钥的加密算法记为:C=E(K,P),并且P=D(K,E(K,P))。 其工作过程如图所示: 而非对称加密算法则需要不同的两个密钥来进行加密和解密,这两个密钥一般分别叫做公钥和私钥。 加密与解密的密钥不同,则:P=D(KD,E(KE,P))。公钥和私钥成对出现,是通过某一种加密算法得到一个密钥对,公钥是密钥对中公开的部分,私钥则是非公开的部分。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。 其工作过程如图所示: 步骤1-3

为什么HTTPS比HTTP更安全?

风格不统一 提交于 2019-12-21 11:03:24
摘要: 理解HTTPS。 作者: 浪里行舟 Fundebug 经授权转载,版权归原作者所有。 前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。 读完本文,希望你能明白: HTTP通信存在什么问题 HTTPS如何改进HTTP存在那些问题 HTTPS工作原理是什么 想阅读更多优质文章请猛戳 GitHub博客 ,一年五十篇优质文章等着你! 一、什么是HTTPS HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 HTTPS主要作用是: (1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全; (2)对网站服务器进行真实身份认证。 我们经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用 http:// ,而是改用 https:// 。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。 二、为什么需要HTTPS

电子签名和数字签名有什么区别?

你离开我真会死。 提交于 2019-12-21 01:06:24
2005年我国颁布《电子签名法》,明确了电子签名的法律效力。但是随之而来的一些有关电子签名的词汇,却叫人一时搞不明白,比如:数字签名就是《电子签名法》中的电子签名吗?数字签名与电子签名有什么区别? 电子签名 要理解什么是电子签名,需要从传统手工签名或盖印章谈起。在传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,在法律上才能承认这份合同是有效的。 而在互联网虚拟世界中,合同或文件是以电子文件的形式表现和传递的。在电子文件上,传统的手写签名和盖章是无法进行的,这就必须依靠技术手段来替代,能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵懒性,这种电子技术手段称之为电子签名。 《电子签名法》对电子签名的定义是指 数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据 。实现电子签名的技术手段有很多种,常见的电子签名形式有:手写签名或印章的数字化图像、采用生物识别数据(如虹膜、指纹)、基于公钥密码技术的数字签名等。 数字签名 很多人认为“电子签名=数字签名”,这是错误的!数字签名是电子签名技术的一种,也是目前比较成熟且全球应用最为普遍的电子签名技术。大多数应用场景提到的电子签名,实际指的就是数字签名