密码学-尚硅谷

一、密码学基本概念

1、古典密码学

1)替换法

2)移位法

3)古典密码破解方式

2、近代密码学

3、现代密码学

1)散列函数

2)对称密码

3)非对称密码
对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。

二、ASCII编码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。

三、凯撒加密

四、频度分析法破解恺撒加密

五、Byte和bit

Byte : 字节. 数据存储的基本单位,比如移动硬盘1T , 单位是byte
bit : 比特, 又叫位. 一个位要么是0要么是1. 数据传输的单位 , 比如家里的宽带100MB,下载速度并没有达到100MB,一般都是12-13MB,那么是因为需要使用 100 / 8

关系: 1Byte = 8bit

5.1 获取字符串byte

package com.atguigu.bytebit;

/**
 * ByteBit
 *
 * @Author: 尚硅谷
 * @CreateTime: 2020-03-17
 * @Description:
 */
public class ByteBit {
    public static void main(String[] args) {
        String a = "a";
        byte[] bytes = a.getBytes();
        for (byte b : bytes) {
            int c=b;
            // 打印发现byte实际上就是ascii码
            System.out.println(c);
        }
    }
}

在这里插入图片描述

5.2 byte对应bit

package com.atguigu.bytebit;

/**
 * ByteBit
 *
 * @Author: 尚硅谷
 * @CreateTime: 2020-03-17
 * @Description:
 */
public class ByteBit {
    public static void main(String[] args) {
        String a = "a";
        byte[] bytes = a.getBytes();
        for (byte b : bytes) {
            int c=b;
            // 打印发现byte实际上就是ascii码
            System.out.println(c);
            // 我们在来看看每个byte对应的bit,byte获取对应的bit
            String s = Integer.toBinaryString(c);
            System.out.println(s);
        }
    }
}

在这里插入图片描述

5.3 中文对应的字节

// 中文在GBK编码下, 占据2个字节
// 中文在UTF-8编码下, 占据3个字节
package com.atguigu;

/**
 * ByteBitDemo
 *
 * @Author: 尚硅谷
 * @CreateTime: 2020-03-16
 * @Description:
 */
public class ByteBitDemo {
    public static void main(String[] args) throws Exception{

        String a = "尚";
        byte[] bytes = a.getBytes();
        for (byte b : bytes) {
            System.out.print(b + "   ");
            String s = Integer.toBinaryString(b);
            System.out.println(s);
        }
    } 
}

5.4 英文对应的字节


六、常见的加密方式

1、对称加密

采用单钥的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

2、对称加密算法

常见加密算法:

  • DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
  • AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

3、== Base64介绍==

Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一,可读性编码算法不是为了保护数据的安全性,而是为了可读性。
可读性编码不改变信息内容,只改变信息内容的表现形式。

Base64算法原理
base64 是 3个字节为一组,一个字节 8位,一共 就是24位 ,然后,把3个字节转成4组,每组6位,缺少的2位,会在高位进行补0 。
这样做的好处在于 ,base取的是后面6位,去掉高2位 ,那么base64的取值就可以控制在0-63位了,所以就叫base64。

base64 构成原则
① 小写 a - z = 26个字母
② 大写 A - Z = 26个字母
③ 数字 0 - 9 = 10 个数字
④ + / = 2个符号

在这里插入图片描述

4、toString()与new String ()用法区别

七、加密模式

八、填充模式

九、消息摘要

  • 消息摘要(Message Digest)又称为数字摘要(Digital Digest)
  • 它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。
  • 使用数字摘要生成的值是不可以篡改的,为了保证文件或者值的安全。

1、特点

无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出。
只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。

消息摘要是单向、不可逆的
常见算法 :

  • MD5
  • SHA1
  • SHA256
  • SHA512

【补充】SHA-256 是加密算法还是摘要算法 ?
SHA-256 是一种摘要算法,也称为哈希算法,并非加密算法。

区别:

  • 摘要算法(哈希算法):将任意长度的输入通过哈希函数生成固定长度的输出(称为哈希值或摘要),用于验证数据完整性。摘要算法是不可逆的,也就是说无法通过哈希值还原原始数据。SHA-256 属于这个类别。
  • 加密算法:用于将明文转换为密文的过程,是可逆的,需要密钥才能加密和解密。常见的加密算法有 AES、RSA 等。

SHA-256 特点:

  • SHA-256 产生 256 位(32 字节)的固定长度哈希值。
  • 主要用于数据完整性校验和数字签名,不用于加密数据。
    因此,SHA-256 是一种摘要算法,而非加密算法

十、非对称加密

1、什么是非对称加密

① 非对称加密算法又称现代加密算法。
② 非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
③ 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey)
④ 公开密钥和私有密钥是一对
⑤ 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
⑥ 如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
⑦ 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

2、特点

加密和解密使用不同的密钥
如果使用私钥加密, 只能使用公钥解密
如果使用公钥加密, 只能使用私钥解密
处理数据的速度较慢, 因为安全级别高

3、常见算法

RSA
ECC

4、生成公钥和私钥


十一、数字签名

1、数字签名是什么?

数字签名就是在网络中传输数据时候,给数据添加一个数字签名,表示是谁发的数据,而且还能证明数据没有被篡改。

数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改)

2、基本过程

数字签名是一种确保数据完整性、身份验证和防止篡改的技术。以下是数字签名的整个过程:

1. 生成密钥对

数字签名使用非对称加密算法,如RSA或ECC。用户需要生成一对密钥:

  • 私钥:用于签名的加密密钥,保密。
  • 公钥:用于验证签名的公开密钥,公开。

2. 消息摘要(Hash)

  • 在进行数字签名之前,首先要对待签名的数据进行哈希处理。哈希函数(如SHA-256)将任意长度的消息转换为固定长度的消息摘要(digest)。
  • 该消息摘要是一个唯一的值,任何消息的微小改变都会导致摘要发生显著变化。

3. 签名生成

  • 使用私钥对消息摘要进行加密。加密后的摘要就是数字签名。
  • 这个数字签名与原始消息一起发送。

4. 签名验证

接收方通过以下步骤验证签名:

  1. 消息摘要重算:接收方使用相同的哈希函数对收到的原始消息进行哈希处理,生成消息摘要。
  2. 签名解密:使用发送方的公钥解密数字签名,得到消息摘要。
  3. 摘要比较:比较接收方重新计算的消息摘要与解密出的消息摘要。如果二者一致,则签名有效,表明消息未被篡改,且签名确实是由持有私钥的人生成的。

5. 验证完整性和身份

  • 如果签名验证通过,接收方可以确信:
    • 消息没有被篡改,因为哈希摘要一致。
    • 消息确实来自持有私钥的人,从而验证了发送方的身份。

这是数字签名的基本过程,用于在数字通信中确保数据安全、完整性和身份认证。


3、数字证书

上面提到我们对签名进行验证时,需要用到公钥。如果公钥是伪造的,那我们无法验证数字签名了,也就根本不可能从数字签名确定对方的合法性了。这时候证书就闪亮登场了。

4、网页加密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值