密码学(初学者)

密码学:主要是研究编制密码 和 破译密码的学科
密码学的主要目的:用一句大白话:研究如何隐藏信息并且把信息传递出去的一个学科

1.1 古典密码学

核心原理:替换法,移位法

凯撒加密

频度分析法进行破译密码,在不知道密码的规则前提下,进行破译密码如何设置密码才比较安全

古代就已经开始使用密码,目的:就是希望保护信息
① 替换法
就是使用固定的信息,将原文替换成密文
例如:bee,将b替换成w,e替换p,单词就变成WPP替换法的加密方式:第一种:单表替换,第二种,多表替换

单表替换:原文和密文使用的是同一张表
例如:abcde ->swtrp
多表替换:表示有多张表,原文和密文进行对比
表单1:abcde-swtrp、表单2:abcde-chfhk、表单3:abcde-jftou
原文:bee
密钥:312(第三个表里的b,第一张表的e,第二张表的e)
密文:fpk

② 移位法
移位法,是按照字母,在字母表上面的位置,进行移动
凯撒加密
例如:abcde 往后面移动2位cdefg

③ 古典密码学的破解冇式
频率分析法:概率论

1.2 近代密码学:

核心原理:替换法,移位法

恩尼格玛密码机 核心使用的也是 移位法和替换法
人工智能之父图灵破解

1.3 现代密码学

① 散列函数

散列函数,也见杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有 MD5、多应用在文件校验,数字签名中。SHA-1、SHA256
MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值
SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值

1.9 消息摘要

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

1.9.1特点
无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出
只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出消息摘要是单向、不可逆的
常见算法:
MD5
SHA1
SHA256
SHA512
-
在线获取消息摘要
百度搜索 tomcat进入官网下载,会经常发现有 sha1,
sha512,这些都是数字摘要


② 对称加密

对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。
例如:原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密.…最后拼接成密文;块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。前文提到的古典密码学加密方法,都属于流加密。

对称加密,使用的加密方式和解密方式,使用的是用一把密钥


DES 加密和解密:密钥key必须是8个字节

AES 加密和解密(是在DES后面出来的,先对来说比DES高级一些)

如果使用的是AES加密,那么密钥必须是16个字节


对称加密的核心原理:流加密,块加密

特点:
① 加密速度快
② 密文是不可逆,密钥不能泄露
③ 如果在编码表,上面找不到对应的字符,会出现乱码

④ 一般需要结合base64一起使用

注:如果使用des进行加密,那么密钥必须是8个字节

需要注意,在使用base64 ,进行编码的时候,如果字节不够3个字节,需要使用=进行补齐

 

toString()和 new String()核心原理和区别

注意:如果在使用编码,进行加密和解密的时候,需要使用new string 这种方式

区别:
str.tostring方法,这个方法调用的实际上是object,里面的tostring方法,一般在object的tostring方法,返回的实际上是哈希值
new String方法:是根据参数,参数是一个字节数组,使用java虚拟机默认编码格式,会把这个字节数组进行decode,找到对应的字符,如果虚拟机的编码格式,如果是ISO-8859-1,会去找ascii里面的编码进行参照,找对应的字符
什么时候,使用newstring,什么时候,使用tostirng
new String():一般在进行转码的时候,需要使用newStringtoString:做对象打印的时候,或者想得到地址的时候,就使用toString

 

加密模式:ECB CBC 和 填充模式:NoPadding 和PKcs5padding

ECB:Electronic codebook,电子密码本.需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密

优点:可以并行处理数据

缺点:同样的原文生成同样的密文,不能很好的保护数据

同时加密,原文是一样的,加密出来的密文也是一样的

 

CBC:Cipher-block chaining,密码块链接,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块

 优点:同样的原文生成的密文不一样

缺点:串行处理数据(慢)

 

当需要按块处理的数据,数据长度不符合块处理需求时,按照一定的方法填充满块长的规则
NoPadding
。不填充
。在DES加密算法下,要求原文长度必须是8byte的整数倍。在AES加密算法下,要求原文长度必须是16byte的整数倍


PKCS5Padding
数据块的大小为8位,不够就补足
Tips
默认情况下,加密模式和填充模式为:ECB/PKCS5Padding
如果使用CBC模式, 在初始化Cipher对象时,需要增加参数,初始化向量IV:lvParameterSpeciv=new
IvParameterSpec(key.getBytes());

 


③ 非对称加密

对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。
在实际的使用中,远程的提前协商密钥不容易实现,即使协商好,在远程传输过程中也容易被他人获取,因此非对称密钥此时就凸显出了优势。
非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。
非对称加密的特点:非对称加密,有两把密钥,使用公钥加密,必须使用私钥解密,或者,私钥加密,必须使用公钥解密

简介:
① 非对称加密,又叫做现代加密算法
② 非对称加密算法,必须要有两个密钥,一个公钥,一个私钥公钥和私钥是一对,我们叫做密钥对3)
如果使用公钥加密,必须使用私钥解密
⑤ 如果使用私钥加密,必须使用公钥解密

常见的非对称加密算法
① RSA
② ECC
RSA算法和ECC算法

数字签名

数字签名:公钥数字签名,只有信息的发送者,才能产生别人无法伪造的一段数字串,类似于写在纸上面的普通物
理签名。

数字签名(又称公钼数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钼加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钼加密技术与数字摘要技术的应用。

 

如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

生成数字签名的流程:

① 获取对象

② 初始化签名

③ 传入原文

④ 开始签名

⑤ 使用base64进行编码

 

数字摘要
base64核心加密原则,和base64原理

base64介绍
base64不是加密算法,可读性算法
base64 目的不是保护我们的数据,目的是为了可读性
base64是由64个字符组成,大写A-2,小写a-2,数字0-9,两个符号,+和/base58一般用在比特币里面的一种编码方式
base64和 base 58 区别
在base58 里面,没有数字0,也没有字母o,没有大写字母1,没有小写字母i也没有+也没有/

base64 原理
base 64,是3个字节为一组,一个字节是8位,一共就是24位,base64 把三个字节,转换成4组,每组6位个字节,应该是8位,缺少2位,在高位进行补齐,在高位进行补0,这样做的好处,base64取后面6位,前面的2位,会把他进行去掉,可以把base64控制在0-63之间。111111=32+16+8+4+2+1=64


数字签名和数字证书

keytool工具的使用

 

1.2 ASCII编码

ASCIl(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

 1.3 凯撒加密和凯撒解密

原理:是把26个字母,进行位移,往左边或者往右边进行位移,在位移的时候,需要注意,最多只能移动25位

1.4 频率分析法目的

:在不知道密钥的情况下,也想进行破解密文
原理:比如以英文为例出现的评率是最高的,第二个评率最高的是t,然后 就是a字母e.当我们拿到密文的时候,密文里面也会出现一个评率最高的字母,假设密文里面出现评率最高的是j,可以假设密文里面的j,就是明文里面的e,假设密文里面出现频率第二个高的字母,假设在明文当中的t

1.5 Byte和bit

Byte:字节.数据存储的基本单位,比如移动硬盘1T,单位是byte

bit:比特,又叫位,一个位要么是0要么是1.数据传输的单位,比如家里的宽带100MB,下载速度并没有达到100MB,一般都是12-13MB,那么是因为需要使用100/8
关系: 1Byte =8bit

根据编码的格式不一样,对应的字节也不一样如果是

UTF-8:一个中文对应的是三个字节

GBK :一个中文对应的是二个字节

 

posted @   Aidy  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示