Home
Services
Shop
Pages
About Us
Services Details
Shop Details
Blog Details
Contact
Blog
(+86) 13108958693
Mon-Fri: 17:00 - 22:00 Sat/Sun: 09:00 - 22:00
(+86) 13108958693
Mon-Fri: 17:00 - 22:00 Sat/Sun: 09:00 - 22:00
扫一扫加站长微信
您的鼓励是我最大的动力
微信打赏
2元
4元
10元
微信
支付宝
首页
标准&法规
ISO-21434
R155
R156
密码工具
对称密码
非对称密码
摘要函数
消息认证码
数字签名
数字证书
随机数
密钥
软件安全
AUTOSAR
QNX
Linux
硬件安全
SecureZone
HSM
TEE
攻击手段
Dos 攻击
中间人攻击
...
...
防御措施
最小权限原则
安全启动
安全升级
安全通信
安全诊断
安全日志
防火墙
安全测试
模糊测试
渗透测试
漏洞扫描
关于
扫一扫加站长微信
您的鼓励是我最大的动力
2元
4元
10元
微信
支付宝
DES
主页
密码工具
对称密码
对称密码介绍
> DES <
Triple DES
AES
Rabbit
RC4
异或
非对称密码
非对称密码介绍
RSA
SM2
ECC
摘要函数算法
摘要函数介绍
MD4
MD5
SHA
SM3
CRC
消息认证码
消息认证码介绍
CMAC
HMAC
数字签名
数字签名介绍
RSA-Signature
ECDSA
数字证书
数字证书介绍
X.509
X.509 证书解析
X.509 证书生成
X.509 证书验证
SSL
SSL 证书解析
...
...
...
CSR 生成
随机数
随机数介绍
PRNG
TRNG
密钥
密钥介绍
Diffie-Hellman 密钥交换
口令
分组模式:
ECB(电子密码本)
CBC(密码块链)
OFB(输出反馈)
CFB(加密反馈)
CTR(计算器模式)
填充模式:
None
PKCS7
Zeros
ANSIX923
ISO10126
密钥长度:
64bit
密钥:
Hex
Text
明文格式:
十六进制
Base64
密文格式:
十六进制
Base64
加密 ↓
解密 ↑
DES(Data Encryption Standard,数据加密标准)
是一种传统的对称加密算法,由IBM开发,并于1977年被美国国家标准局(NBS,现在的NIST,即国家标准与技术研究院)采纳为联邦信息处理标准(FIPS)。尽管DES 在其时间内被广泛使用,现在它被认为是较不安全的加密方法,因为其56位的秘钥长度相对较短,容易受到暴力破解攻击。
DES的加密与解密
DES 是一种将 64 比特的明文加密成 64 比特的密文的对称密码算法 ,它的密钥长度是 56 比特。尽管从规格上来说,DES 的密钥长度是 64 比特,但由于每隔 7 比 特会设置一个用于错误检查的比特,因此实质上其密钥长度是 56 比特。
DES 是以 64 比特的明文( 比特序列 ) 为一个单位来进行加密的,这个 64 比特的单位称为
分组
。一般来说,以分组为单位进行处理的密码算法称为
分组密码 (block cipher)
, DES 就是分组密码的一种。
DES 每次只能加密 64 比特的数据,如果要加密的明文比较长,就需要对 DES 加密进行迭代(反复),而迭代的具体方式称为
分组模式(mode)
。
DES的结构(Feistel网络)
DES 的基本结构是由 Horst Feistel 设计的,因此也称为
Feistel 网络(Feistel network)
、
Feistel 结构(Feistel structure)
或者
Feistel 密码(Feistel cipher)
。
在 Feistel 网络中,加密的各个步骤称为轮(round), 整个加密过程就是进行若干次轮的循环。下图展现的是 Feistel 网络中一轮的计算流程。DES 是一种 16 轮循环的 Feistel 网络。
一轮的具体计算步骤如下。
(1) 将输入的数据等分为左右两部分。
(2) 将输人的右侧直接发送到输出的右侧。
(3) 将输入的右侧发送到轮函数。
(4) 轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列。
(5) 将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧。
但是,这样一来“右侧”根本就没有被加密,因此我们需要用不同的子密钥对一轮的处理重复若干次,并在每两轮处理之间将左侧和右侧的数据对调。
多轮 Feistel 网络
3 轮 Feistel 网络的加密
下图展现了一个 3 轮的 Feistel 网络,3 轮加密计算需要进行两次左右对调。 对调只在两轮之间进行,最后一轮结束之后不需要对调。
3 轮 Feistel 网络的解密
Feistel 网络的解密操作只要按照相反的顺序来使用子密钥就可以完成了,而 Feistel 网络本身的结构,在加密和解密时都是完全相同的。
下面我们来总结一下 Feistel 网络的性质。
最容易发现的一点就是,Feistel 网络的轮数可以任意增加。无论运行多少轮的加密计算,都不会发生无法解密的情况。其次,我们还可以发现,
加密时无论使用任何函数作为轮函数都可以正确解密
。 也就是说,即便用轮函数的输出结果无法逆向计算出输入的值(即该函数不存在反函数)也没有问题。轮函数可以无需考虑解密的问题,可以被设计得任意复杂。
分组模式
详情请见:
对称密码介绍
——分组密码的模式。
填充模式
None:
不填充
PKCS7:
填充字符串由一个字节序列组成,每个字节填充该字节序列的长度
Zeros:
填充字符串由设置为零的字节组成
ANSIX923:
填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节均填充数字零
ISO10126:
填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据
密钥(偏移)
Text:
表示是文本格式,加密前会使用 UTF-8 编码,把它转成 byte[] 数组
Hex
表示是十六进制格式,加密前会把十六进制字符串转成 byte[] 数组
+