![](https://img-blog.csdnimg.cn/direct/f262e3e2810946f9b54ba248ffe49e49.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【加密与安全】
文章平均质量分 95
加密是信息安全的重要组成部分之一。它通过使用一定的算法将明文转换为密文,以防止未经授权的用户访问或修改数据。加密可以应用于各种场景,包括通信、存储和身份验证等。
小小工匠
show me the code ,change the world
展开
-
加密与安全_三种方式实现基于国密非对称加密算法的加解密和签名验签
无需秘钥,“加密”后的数据不可逆。所以这也不算是“加密”,一般称为哈希(Hash)。任何长度的数据生成的哈希值长度都固定。相同数据每次生成的哈希值相同,不同的数据则不同。数据摘要/哈希,验证数据是否被篡改、或数据丢失,保障数据的完整性、不可篡改性。单向加密保存数据,如密码的保存,密码的存储普遍都是存的哈希值,登录时比较其hash值即可。原创 2024-06-30 09:01:33 · 1291 阅读 · 0 评论 -
加密与安全_Java 加密体系 (JCA) 和 常用的开源密码库
无需秘钥,“加密”后的数据不可逆。所以这也不算是“加密”,一般称为哈希(Hash)。任何长度的数据生成的哈希值长度都固定。相同数据每次生成的哈希值相同,不同的数据则不同。数据摘要/哈希,验证数据是否被篡改、或数据丢失,保障数据的完整性、不可篡改性。单向加密保存数据,如密码的保存,密码的存储普遍都是存的哈希值,登录时比较其hash值即可。原创 2024-06-28 20:45:00 · 2121 阅读 · 0 评论 -
加密与安全_ Jasypt (Java Simplified Encryption)不完全指北
Jasypt 是一个 Java 库,它允许开发人员以最小的努力添加基本的加密功能,并且不需要深入了解密码学的工作原理。高安全性、基于标准的加密技术,适用于单向和双向加密。加密密码、文本、数字、二进制文件…与 Hibernate 的透明集成适合集成到基于 Spring 的应用程序中,也可以与 Spring Security 透明集成用于加密应用程序配置(即数据源)的集成功能多处理器/多核系统中高性能加密的特定功能开放 API,可与任何 JCE 提供商一起使用。原创 2024-06-27 21:45:00 · 520 阅读 · 0 评论 -
每日一博 - 复习Https工作原理
TLS是一种安全协议,主要用于在互联网上安全传输数据。上图展示了客户端和服务端之间建立安全连接的步骤。原创 2024-05-30 20:15:00 · 1417 阅读 · 0 评论 -
加密与安全_AES & RSA 密钥对生成及PEM格式的代码实现
RSA加密算法的填充模式是确保数据安全性和算法有效性的关键。ENCRYPTION_OAEP、ENCRYPTION_PKCS1和ENCRYPTION_NONE各有优缺点和适用场景。在实际应用中,根据具体需求选择合适的填充模式,能够有效提升加密的安全性和性能。主要特点:对称加密:同一个密钥用于加密和解密。块加密:以固定大小的块(128位)对数据进行加密。高效性:比公钥加密算法快很多,适用于需要高性能的数据加密场景。主要缺点:密钥管理:需要加密端和解密端都使用相同的密钥,密钥分发和管理较为复杂。原创 2024-05-26 17:32:11 · 967 阅读 · 0 评论 -
加密与安全_PGP、OpenPGP和GPG加密通信协议
PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字签名和压缩技术来确保数据的保密性、完整性和可验证性。GP最初由麻省理工学院的Nick embrace和Eric Hughes开发,后来由Phil Zimmermann进一步发展。它使用公钥加密和私钥解密的机制,以确保只有信息的接收者才能解密和阅读邮件内容。PGP的主要优点是它易于使用,并能在大多数流行的电子邮件客户端中集成。然而,随着更高级的加密技术和标准(如OpenPGP和GP原创 2024-03-09 04:11:50 · 2634 阅读 · 2 评论 -
加密与安全_使用Java代码操作RSA算法生成的密钥对
在数字化时代,网络通信的安全性是必须关注的重要问题之一。非对称加密算法作为现代密码学的重要组成部分,为保护通信的隐私提供了一种可靠的解决方案。非对称加密算法,又称为公钥加密算法,是一种密码学中的重要概念。它与传统的对称加密算法不同,需要一对密钥:公钥和私钥。这对密钥之间存在着特殊的数学关系,但无法通过公钥推导出私钥,从而保证了通信的安全性。原创 2024-03-05 23:12:35 · 2781 阅读 · 0 评论 -
加密与安全_ 理解字节与比特
Byte(字节)是计算机中数据存储的基本单位,通常用于衡量存储容量,比如移动硬盘的容量可以是1TB(1TB = 1 terabyte = 1兆字节 = 1,024 gigabytes)。一个字节由8个比特(bit)组成。比特是最小的数据单位,它可以是0或1,用于表示二进制信息。数据传输时通常以比特为单位进行计量,比如家里的宽带速度可能是以兆比特(Mbps)或千兆比特(Gbps)为单位。当我们说家里的宽带是100Mbps时,意味着每秒可以传输100兆比特的数据。原创 2024-03-05 19:31:47 · 1866 阅读 · 0 评论 -
加密与安全_ 凯撒密码
凯撒密码是一种简单的替换加密技术,也称为移位密码。它是古典密码学中最早的密码之一,得名于古罗马军队领袖凯撒·尤利乌斯(Julius Caesar),据说他曾经使用过这种加密方法。恺撒密码,也称为恺撒加密或恺撒变换,是一种最古老且最简单的密码之一。它的原理很简单,就是通过将明文中的每个字母按照字母表顺序向后(或向前)移动固定的位置来进行加密。这个固定的位置就是密钥,通常用一个整数来表示,称为偏移量。例如,当偏移量为3时,明文中的字母A将被加密为D,B被加密为E,以此类推。原创 2024-03-04 22:38:33 · 2678 阅读 · 0 评论 -
加密与安全_探索数字证书
数字证书是一种重要的安全标准,它集成了多种密码学算法,以确保数据的安全性、完整性和可信度。在数字化信息传输中,摘要算法用于验证数据的完整性非对称加密算法用于加密和解密数据签名算法则用于验证数据的来源和确保抗否认性将这些算法集合到一起,并依据一套完善的标准来管理,形成了数字证书的体系。通过数字证书,用户可以实现数据加解密、身份认证和签名等多种功能。其中,最重要的作用之一是防止中间人攻击。这是通过采用链式签名认证来实现的。原创 2024-03-03 21:09:13 · 2612 阅读 · 0 评论 -
加密与安全_探索签名算法
在非对称加密中,使用私钥加密、公钥解密确实是可行的,而且有着特定的应用场景,即数字签名。数字签名的主要目的是确保消息的完整性、真实性和不可否认性。通过使用私钥加密消息,发送者相当于对消息进行了签名,因为只有发送者拥有私钥,所以只有发送者能够生成正确的签名。然后,其他人可以使用发送者的公钥来验证签名,确保消息确实是由发送者签署的。这种方式确保了消息的真实性和不可否认性,因为只有私钥的持有者才能够生成正确的签名,其他人无法伪造。同时,公钥的持有者可以通过验证签名来确认消息的完整性和真实性。原创 2024-03-02 20:45:00 · 2895 阅读 · 0 评论 -
加密与安全_探索非对称加密算法_RSA算法
如果修改待加密的byte[]数据的大小,可以发现,使用512bit的RSA加密时,明文长度不能超过53字节,使用1024bit的RSA加密时,明文长度不能超过117字节,这也是为什么使用RSA的时候,总是配合AES一起使用,即用AES加密任意长度的明文,用RSA加密AES口令。因此,通常的做法是,使用RSA加密对称密钥(如AES密钥),然后使用对称密钥加密要传输的数据。中我们可以看到,公钥-私钥组成的密钥对是非常有用的加密方式,因为公钥是可以公开的,而私钥是完全保密的,由此奠定了非对称加密的基础。原创 2024-03-02 07:15:00 · 2368 阅读 · 1 评论 -
加密与安全_探索密钥交换算法_Diffie-Hellman算法
对称加密算法解决了数据加密的问题,例如AES加密可以有效地保护文件的安全性。然而,一个关键的挑战是如何在不安全的通信信道上安全地传输密钥。假设小明需要向路人甲发送一个加密文件,他可以先生成一个AES密钥,使用该密钥对文件进行加密,然后将加密后的文件发送给对方。但是,问题在于对方需要密钥才能解密文件,因此密钥的传输必须是安全的。在传统的密钥传输方法中,密钥通常通过不同的方式发送,如口头告知、书面传递或者其他安全信道。原创 2024-03-02 05:45:00 · 2335 阅读 · 0 评论 -
加密与安全_探索口令加密算法(PBE)
加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位,而不是我们用WinZip/WinRAR那样,随便输入几位都可以。这是因为对称加密算法决定了口令必须是固定长度,然后对明文进行分块加密。又因为安全需求,口令长度往往都是128位以上,即至少16个字符。原创 2024-03-01 21:44:26 · 2333 阅读 · 0 评论 -
加密与安全_探索对称加密算法
对称加密算法是一种加密技术,使用相同的密钥来进行加密和解密数据。在这种算法中,发送方使用密钥将明文(未加密的数据)转换为密文(加密的数据),而接收方使用相同的密钥将密文还原为明文。对称加密算法的安全性依赖于密钥的保密性,因为任何持有相同密钥的人都能够解密数据。常见的对称加密算法包括AES(高级加密标准)和DES(数据加密标准)。虽然对称加密算法在性能上通常比非对称加密算法更高效,但在密钥管理和分发方面存在挑战。通俗来讲,可以这么理解: 对称加密算法就像是一把钥匙可以打开一个锁。原创 2024-03-01 19:15:00 · 2448 阅读 · 0 评论 -
加密与安全_深入了解Hmac算法(消息认证码)
HMAC(Hash-based Message Authentication Code)算法是一种基于哈希函数的消息认证码算法,用于验证消息的完整性和认证消息的发送者。它结合了哈希函数和密钥,通过将密钥与消息进行哈希运算来生成消息认证码。首先,选择一个适当的哈希函数(如MD5、SHA-1、SHA-256等)和一个密钥。将密钥进行适当的填充和处理,以满足哈希函数的输入长度要求。将消息与填充后的密钥按照特定的方式进行组合。对组合后的数据进行哈希运算。将哈希结果作为消息认证码输出。原创 2024-03-01 06:36:30 · 3020 阅读 · 1 评论 -
加密与安全_面向密码学的开源库BouncyCastle
在某些情况下,Java标准库提供的哈希算法可能无法满足特定需求。方法一:自行实现这种方法需要对特定算法的原理和实现细节有深入的了解,然后才能编写出符合要求的算法。然而,这种方式的难度较大,尤其是对于复杂的加密算法而言,需要大量的时间和精力来完成。方法二:使用第三方库借助第三方库,我们可以方便地使用各种不同的哈希算法和加密算法,而无需自行实现。BouncyCastle就是一个提供了丰富的哈希算法和加密算法的第三方库。它包含了Java标准库没有的一些算法,如RipeMD160哈希算法。原创 2024-02-29 05:45:00 · 4039 阅读 · 0 评论 -
加密与安全_深入了解哈希算法
哈希算法(Hash)又称摘要算法(Digest)。哈希算法是一种重要的加密算法,其核心思想是将任意长度的数据映射为固定长度的哈希值,这个哈希值通常用于验证数据的完整性、索引数据和加速数据查找。在Java中,hashCode()方法是一种哈希算法的应用。相同的输入一定会得到相同的输出不同的输入大概率得到不同的输出。在实际编程中,我们经常需要根据对象的哈希值来进行数据存储和查找,比如使用哈希表等数据结构。为了确保正确性,如果一个类覆写了equals()方法,就必须同时覆写hashCode()原创 2024-02-28 22:36:54 · 2479 阅读 · 0 评论 -
加密与安全_探索常用编码算法
在计算机系统中,加密与安全是至关重要的概念。想象一下,当B想要发送一封邮件给A时,邮件可能在传送过程中遭到黑客的窃听,这就需要防止信息泄露。此外,黑客还可能篡改邮件内容,因此A需要确保她能够辨别出邮件是否被篡改。最后,黑客可能会冒充B发送虚假邮件给A,这需要A有能力辨别真伪。为了应对这些潜在的安全威胁,我们需要采取以下三项措施:防止窃听防止篡改防止伪造计算机加密技术旨在实现上述目标。现代计算机密码学建立在严格的数学理论基础上,并逐渐发展成为一门科学。原创 2024-02-28 22:04:09 · 2663 阅读 · 0 评论 -
PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
这个命令生成了一个 2048 位长度的 RSA 私钥,并将其保存到文件中。这个私钥将用于后续创建自签名的根证书。这个命令使用上一步生成的私钥 () 来生成一个自签名的根证书。具体地,它执行了以下操作:-x509:生成一个自签名的 X.509 格式证书。-new:创建一个新的证书请求。-nodes:不使用密码加密密钥。:指定之前生成的私钥文件作为证书的密钥。:指定证书的主题信息。在这里,表示证书的通用名称 (Common Name) 为client-ca。-days 5000。原创 2024-02-12 04:30:00 · 2305 阅读 · 0 评论 -
PKI - 借助Nginx实现_客户端使用自签证书供服务端验证
自签名证书可以用于验证客户端的身份。通过客户端提供的证书,服务端可以确保连接方是合法的客户端,并且拥有该证书对应的私钥。使用自签名证书的客户端可以与服务端建立加密的通信通道。客户端的证书中包含了公钥,可以用于加密数据传输,保护数据的机密性。通过客户端的证书验证,服务端可以确保与客户端直接通信,防止中间人攻击。如果客户端提供的证书无效或不匹配,服务端会拒绝连接,从而保护通信的安全性。服务端可以根据客户端提供的证书对其进行授权访问。原创 2024-02-11 16:32:10 · 2409 阅读 · 0 评论 -
PKI - 借助Nginx 实现Https_使用CA签发证书
使用 CA 签发的证书可以建立信任关系,客户端可以信任由公认的 CA 颁发的证书,从而确保与服务器之间的通信是安全可靠的。CA 对证书申请者进行身份验证,并在验证通过后签发证书。这样,服务器可以通过 CA 签发的证书来证明自己的身份,确保客户端与合法的服务器进行通信,防止中间人攻击。证书中包含了公钥,可以用于加密通信数据。使用 CA 签发的证书可以保护通信数据的机密性,防止数据被窃取或篡改。证书中包含了数字签名,可以用于验证通信数据的完整性。使用 CA 签发的证书可以确保通信数据在传输过程中没有被篡改。原创 2024-02-11 14:02:38 · 3124 阅读 · 0 评论 -
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。openssl支持Linux、UNIX、windows、Mac等平台。现在,Nginx 应该已经配置为使用自签名证书进行 HTTPS 加密通信。请确保防火墙已正确配置以允许流量通过 HTTPS 端口(默认为 443)。这些指令配置了 Nginx 流模块的 SSL/TLS 加密功能,包括了服务器证书、私钥、会话缓存等参数。openssl是一个功能丰富且自包含的开源安全工具箱。这些命令可以用来生成自签名的证书并查看证书的详细信息。原创 2024-02-08 23:16:36 · 3239 阅读 · 0 评论 -
PKI - 05 证书申请步骤
选择合适的CA:首先,您需要选择一个可信赖的CA,通常是一家商业CA,例如Digicert、Entrust、GlobalSign等,或者是自己组织内部的CA。准备证书请求(CSR):您需要生成一个证书请求(Certificate Signing Request,CSR)。这是一个包含了您的公钥和身份信息(例如组织名称、国家、城市等)的文件。您可以使用各种工具来生成CSR,例如OpenSSL工具或者Web服务器的管理界面。填写申请表格:您需要填写CA提供的证书申请表格,并提供相关的身份和组织信息。原创 2024-02-08 05:45:00 · 3503 阅读 · 0 评论 -
PKI - 04 证书授权颁发机构(CA) & 数字证书
在PKI中,通常只有一个或少数几个受信任的证书颁发机构(CA),类似于一个受信任的介绍者。这些CA是负责颁发和管理数字证书的权威机构,它们被广泛信任,并负责确保数字证书的安全和可靠性。原创 2024-02-07 19:10:42 · 2820 阅读 · 0 评论 -
PKI - 03 密钥管理(如何进行安全的公钥交换)
1.用户A和用户B已经安全的交换了公钥(通过离线确认)2.用户B和用户C已经安全的交换了公钥(通过离线确认)3.用户A和用户C能否通过用户B的帮助,安全的交换公钥呢?用户B能够扮演类似一个受信任的介绍者的角色,因为它是被用户A和C两者都信任的。1.用户B通过自己的私钥给用户A的公钥做签名并把它发送给用户C2.用户B通过自己的私钥给用户C的公钥做签名并把它发送给用户A3.用户A和C能够验证签名,因为他们早已拥有了用户B的公钥其中用户B作为受信任的介绍者,可以帮助用户A和用户C安全地交换公钥。原创 2024-02-07 16:08:14 · 3269 阅读 · 0 评论 -
PKI - 02 对称与非对称密钥算法
对称密钥算法和非对称密钥算法是两种常见的加密技术,它们在加密和解密数据时采用不同的方法。对称密钥算法对称密钥算法使用相同的密钥来加密和解密数据。加密者和解密者必须共享相同的密钥。加密速度快,适合大量数据的加密和解密。典型的对称密钥算法包括DES、3DES、AES等。缺点是密钥管理困难,需要安全地共享密钥,并且在传输过程中可能会被窃取。非对称密钥算法非对称密钥算法使用一对密钥,分别是公钥和私钥,用于加密和解密数据。公钥是公开的,任何人都可以使用它来加密数据;原创 2024-02-06 22:52:38 · 2712 阅读 · 0 评论 -
Java - 深入理解加密解密和签名算法
在数字时代,我们的个人信息、交易记录、健康数据等敏感信息经常被存储、传输和处理。如果这些信息以明文形式存在,就像是在一个不设防的房间里放置贵重物品,任何能够访问这些数据的人都能轻易地查看和利用它们。加密技术就像是为这个房间加上了一把锁,只有拥有钥匙(即解密密钥)的人才能打开房间,查看里面的内容。这样,即使数据在传输或存储过程中被第三方截获,他们也无法直接读取其中的信息,从而保护了数据的隐私性。原创 2024-01-21 18:08:33 · 3001 阅读 · 0 评论 -
PKI - 一文读懂SM1、SM2、SM3、SM4等国密算法
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。国密算法是指国家密码管理局认定的一系列国产密码算法,包括SM1-SM9以及ZUC等。其中SM1、SM4、SM5、SM6、SM7、SM8、ZUC等属于对称密码,SM2、SM9等属于公钥密码 (非对称加密)SM3属于单向散列函数。目前我国主要使用公开的SM2、SM3、SM4作为商用密码算法。其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。原创 2024-01-22 05:30:00 · 7748 阅读 · 0 评论 -
PKI - 数字签名与数字证书
SSL是一种安全协议,用于在网络传输中提供数据加密、身份验证和完整性保护。它基于传输层协议(如TCP),并为其提供加密和安全功能。对称加密和非对称加密对称加密:使用相同的密钥进行加密和解密。非对称加密:使用两个密钥:公钥用于加密,私钥用于解密。数字签名:用于验证数据的完整性和身份验证。发送方使用私钥对数据签名,接收方使用公钥验证签名。数字证书:由可信第三方颁发的电子文档,其中包含有关个人或组织的身份信息以及公钥。SSL协议。原创 2024-01-24 18:47:02 · 3185 阅读 · 0 评论 -
Java - OpenSSL与国密OpenSSL
国密OpenSSL与普通OpenSSL的主要不同之处在于支持的加密算法。普通OpenSSL主要支持国际通用的加密算法,而国密OpenSSL在保持对这些算法支持的同时,增加了对中国国家密码管理局规定的国产密码算法的支持。这使得国密OpenSSL能够更好地满足中国用户在特定场景下的安全需求。原创 2024-01-26 22:15:00 · 3196 阅读 · 0 评论 -
GmSSL - GmSSL的编译、安装和命令行基本指令
Java - 一文读懂SM1、SM2、SM3、SM4等国密算法Java - OpenSSL与国密OpenSSLJava - 数字签名与数字证书下载源代码(zip): https://github.com/guanzhi/GmSSL/archive/master.zip解压缩至当前工作目录编译与安装Linux平台安装之后可以执行gmssl命令行工具检查是否成功SM4加密解密SM3摘要SM2签名及验签SM2加密及解密生成SM2根证书rootcakey.pem及CA证书cak原创 2024-02-02 20:15:00 · 2902 阅读 · 0 评论 -
PKI - 01 散列(Hash)函数
PKI(Public Key Infrastructure,公钥基础设施)证书系统是一种用于保护网络通信安全的技术。它基于非对称加密算法,使用一对密钥:公钥和私钥。想象一下,你有一个保险柜,里面有两把钥匙:一把是公钥,可以给别人,另一把是私钥,只有你知道。当别人想给你发送私密信息时,他们可以使用你的公钥对信息进行加密,然后将加密后的信息发送给你。而你收到信息后,可以使用你的私钥解密,因为只有你拥有私钥。PKI证书系统就是管理和分发这些公钥和私钥的系统。原创 2024-02-06 21:31:51 · 2025 阅读 · 0 评论