加密解密与数字签名

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

            在工作中,我们用到了加密与解密,以及数字签名,所以对它的原理以及实现进行讲解:

            实际上数字签名又称作基于PKI的电子签名, PKI的核心机构是电子认证服务提供者,即通称的认证机构CA,PKI签名的核心元素是由CA签发的数字证书,数字证书就如同日常生活中的身份证一样,用来标识网上实体的身份,CA就是对网上实体进行认证的第三方机构.数字证书就是CA机构对网上实体进行认证而产生的电子证书,它是数据签名的基础技术保障.CA机构对电子证书的有效性,有效期等提供查询服务.数字证书所包含公钥用来对使用对应的私钥加密的数据信息进行验证.

           数字签名实现的具体原理是:

1、 将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证,只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。

2、 将该报文摘要值用发送者的私人密钥加密,然后连同原报文和数字证书(包含公钥)一起发送给接收者而产生的报文即称数字签名。

3、接收方收到数字签名后,用同样的HASH算法对报文计算摘要值,然后与用发送者的公开密钥进行解密解开的报文摘要值相比较,如相等则说明报文确实来自所称的发送者。

4、同时通过证书颁发机构CA确认证书的有效性即可确认发送的真实身份。

              数字证书的技术实现:

             数字证书是公钥的载体,是PKI的核心元素.数字证书符合X.509标准,现行的PIK机制一般为又证书,即一个实体一般有两个证书,两个密码对,一个用于电子签名,一个用于加密通信.按照X.509标准,一个标准和数字证书的格式为:

             CA《A》=CA{V,SN,AI,CA,UCA,A,UA,Ap,Ta}

             它将包含证书颁发机构和标识及用户的标识,证书ID,有效期等信息(详见参考资料),另外还包含CA对此证书内容的进行了数字签名,以验证此证书的有效性.在验证一个数字证书的过程中,对数字证书的数字签名的验证将递归进行,只到找到双方共同可信任的CA根证书为止.

             对于RSA产生的公钥、私钥,我们可以有两种方式可以对信息进行加密解密。私钥加密-公钥解密 和 公钥加密-私钥解密。

          下面用个例子说明一下:          

package edu.bjtu;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.InvalidKeyException;
import java.security.Key;
import ja
解密签名、验签、数字签名、数字证书 阅读详情

相关推荐

FL Studio FLEX合成器音源扩展实战:15G第三方音色包安装管理指南

在数字音乐制作中,音源扩展是丰富声音库、提升创作效率的核心技术。其原理在于通过管理预设文件采样资源的路径映射,使宿主软件能够识别并调用外部音色资源。这项技术的价值在于打破了内置音色的限制,让制作人能快速获取海量风格化声音素材,从而激发创作灵感,广泛应用于电子音乐、影视配乐、游戏音效等需要多样化音色的场景。本文聚焦于FL Studio中广受欢迎的FLEX合成器,详细解析如何通过“额外搜索文件夹”机制,安全、规范地整合管理高达15G的第三方音色包,实现音色库的扩容高效工作流构建。

weixin_34075268的博客 479

gpg、sha512sum或md5sum验证包完整性

PGP签名(.asc文件) PGP(英语:Pretty Good Privacy,中文翻译“优良保密协议”)是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密验证之用,以RSA公钥&私钥及AES(Advanced Encryption Standard)等加密算法为基础。 PGP加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤支持几种算法...

liveJQ 4546

Java加密解密签名算法实战:从AES、RSA到数字签名完整指南

加密解密数字签名是现代软件安全的核心基石,它们共同保障了数据的机密性、完整性和身份认证。对称加密算法(如AES)使用同一密钥进行加解密,速度快,适合处理大量数据,其工作模式(如CBC、GCM)和填充方式的选择直接影响安全性。非对称加密算法(如RSA)则使用公钥和私钥对,解决了密钥分发难题,常用于密钥交换数字签名。在Java开发中,通过`javax.crypto`包中的`Cipher`、`KeyPairGenerator`等类,开发者可以高效实现这些算法。理解AES的初始化向量管理、RSA的数据长度限制以

weixin_42539414的博客 254

加密解密(RSA)非对称加密算法

其核心思想是选择两个大素数p和q,计算它们的乘积n=p*q,并选择一个整数e作为公钥,满足e(p-1)(q-1)互质。运行该程序后,将会生成一个名为public.key的文件和一个名为private.key的文件,其中public.key文件保存公钥,private.key文件保存私钥。这将把private.key和public.key转换为private.asc和public.asc文件,其中private.asc和public.asc文件就是RSA私钥和公钥的.asc形式。最后,输出解密后的明文。

比起日出,我更喜欢日落。我的意思是比起遇见你,我更喜欢与你终老 1294

数字签名介绍

区块链中数字签名的介绍

WJiaJiaBest的博客 3394

数字签名加密解密

有关数字签名加密解密的文章我看了许多次,基于这样的事实——我总是说服不了自己,所以每次看都看不明白,说服不了自己。最近在看OAuth的相关东西,数字签名加密解密是绕不开了,干脆静下心来,看看资料,尝试着将自己说服. 1,加密解密基础 简单地讲,计算机加密无非是,用密钥K,对明文P加密,得到密文M: K(P) = M 解密就是将这个过程反过来: K(M) = P ...

weixin_30619101的博客 3051

Java信息安全实战项目:数字签名加密解密

MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,它可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5算法可以被看作是文件的“指纹”,对于文件中的每一个字节,MD5都会计算出一个16字节的“指纹”。MD5的原理包括以下几个步骤:填充:首先将待散列的消息填充至长度满足64位的整数倍,填充位的最后一个字节包含原数据长度的低8位,其余填充位则为0。添加长度值。

weixin_35753291的博客 1074

基于RSA算法的Java加密解密数字签名

package com.face.utils.rsa; import com.sun.org.apache.xml.internal.security.utils.Base64; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import java.security.*; import java.security.interfaces.RSAPrivateCrtKey; import java.secur.

qq_19783793的博客 340

数字签名加密机制/加密解密签名验签、数字签名数字证书:原理概念_新手漏洞详细教程

前言随着信息技术的飞速发展,数据的安全性、完整性和可用性变得至关重要。在网络安全领域,加密解密签名验签、数字签名和数字证书等技术被广泛应用

2401_84915584的博客 2776

数字签名基础结构的加密算法_加密解密签名验签、数字签名数字证书:原理概念_小白白帽子自学路线

前言随着信息技术的飞速发展,数据的安全性、完整性和可用性变得至关重要。在网络安全领域,加密解密签名验签、数字签名和数字证书等技术被广泛应用

程序员三九的博客 1214

C#-java RSA加密解密

using Org.BouncyCastle.Math; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.X509; using Org.BouncyCastl...

372

加密解密签名验签

加密解密 签名验签学习笔记 博客分类:  学习笔记 加密 解密 数字签名 验签  几个基本概念: 加密:发送方利用接收方的公钥对要发送的明文进行加密解密:接受方利用自己的私钥进行解密。 公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密签名:发送方用一个哈希函数从报文文本中生

梦醒,已千年的专栏 1240

加密解密 签名验签学习笔记

原文地址:加密解密 签名验签学习笔记 几个基本概念: 加密:发送方利用接收方的公钥对要发送的明文进行加密解密:接受方利用自己的私钥进行解密。 公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文

坎坎坷坷 514

公钥私钥加密解密数字证书数字签名详解

from http://codefine.co/1455.html 首先明确几个基本概念: 1、密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。 2、公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。 3、私钥,如上,用来解密公钥加密的数据。 4、摘要,对需要传输的文本,做一个HASH计算...

diaoqu4574的博客 357

实战篇-OpenSSL之RSA算法-加密数字签名

本文属于《OpenSSL加密算法库使用系列教程》之一,欢迎查看其它文章。 实战篇-OpenSSL之RSA算法-加密数字签名一、RSA简介二、OFB64模式1、命令行操作2、函数说明3、编程实现(1)特别注意(2)实现OFB64模式加解密(3)测试代码 一、RSA简介 RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

百里杨的博客 1万+

1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍

保密性是确保数据仅能被合法用户访问,即数据不能被未授权的第三方使用。一般通过对称加密来完成保密性,同时也能防窃听,对称加密当前安全性较高的算法有AES和PBE算法。内容传送编码是一种以任意8位字节列组合的描述形式,这种形式不容易被人直接识别。经过base64编码后的数据会比原来数据长约1/3,经过base64编码后的字符串的字符数是以4为单位的整数倍。实现base64的算法推荐使用apache的common codec类库。

alanchanchn的专栏 7万+
上一篇: hibernate总结-N+1问题
下一篇: Caused by: java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配
dandanPMO
博客等级 码龄14年 256粉丝 183原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值