3DES加密认识与使用
公司的项目需要用到3DES加密,于是自己学习了一下,下面分享一下学习内容:
3DES是三重数据加密算法块密码的通称,听到名字就知道与DES加密有关,简单的理解为用DES加密三次,通过增加DES的密钥长度来避免暴力破解。
3DES算法是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块进行3次DES加密/解密。
3DES的密钥是8个字节,但实际上只有7个用上,也就是56位。
3DES是用3个或2个des密钥加密一串明文,最少112位最多168位。也就是14~21个字母或数字符号。
设Ek()和Dk()分别代表DES算法的加密和解密过程,k代表DES算法使用的密钥,M代表明文,C代表密文,则3DES算法的过程可表示为:
加密:C = Ek3(Dk2(Ek1(M))) 即对明文数据进行,加密 --> 解密 --> 加密的过程,最后得到密文数据
解密:M = Dk1(Ek2(Dk3(C))) 即对密文数据进行,解密 --> 加密 --> 解密的过程,最后得到明文数据
这里可以K1=K3,但不能K1=K2=K3(如果相等的话就成了DES算法了)
3DES(K1=K3),可以是3DES-CBC,也可以是3DES-ECB,3DES-CBC整个算法的流程和DES-CBC一样,但是在原来的加密或者解密处增加了异或运算的步骤,使用的密钥是16字节长度的密钥,将密钥分成左8字节和右8字节的两部分,即k1=左8字节,k2=右8字节,然后进行加密运算和解密运算。
3DES(K1≠K2≠K3),和3DES-CBC的流程完全一样,只是使用的密钥是24字节的,但在每个加密解密加密时候用的密钥不一样,将密钥分为3段8字节的密钥分别为密钥1、密钥2、密钥3,在3DES加密时对加密解密加密依次使用密钥1、密钥2、密钥3,在3DES解密时对解密加密解密依次使用密钥3、密钥2、密钥1。
由于DES加解密算法是每8个字节作为一个加解密数据块,因此在实现该算法时,需要对数据进行分块和补位(即最后不足8字节时,要补足8字节)
ECB模式:将待处理的数据分成若干块,每块的长度都为8字节。然后对每块进行加密或解密,最后将他们连接在一起便是最终的结果。每一块的数据互不干扰。
CBC模式:也需要将待处理的数据分块,但是每一块数据在加密或者解密之前都要与前一块的结果做一次异或操作,因此该模式需要定义一个特殊的8字节Key,用于和第一块数据做异或操作。这个特殊的Key就是通常说的初始化向量。在代码中书写时需要配置iv参数,注意iv参数是对应CBC模式的。这样一来,每一块数据都是有联系的,这是与ECB模式不同的一点。
iOS https://github.com/AndreaArlex/3DES
3DES加密认识与使用相关推荐
- 怎样操作vue.js使用3DES加密
如何在VUE-CLI手脚架建立的工程中使用3des加密: 1 npm install crypto-js --save-dev 1 import CryptoJS from 'crypto-js' 1 ...
- java之php、Android、JAVA、C# 3DES加密解密
异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...
- 3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB
昨天帮同事解决了一个接口加密的算法,同事是个小姑娘,不懂,所以老大派我协助她,所以我为了不在姑凉面前掉面子~~火速解决它... 甲方是电信,JAVA写的接口,我一听头就大了,大家都知道~~PHP在加密 ...
- 探讨.NET Core数据进行3DES加密和解密问题
前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...
- 探讨NET Core数据进行3DES加密或解密弱密钥问题
[导读]之前写过一篇<探讨.NET Core数据进行3DES加密和解密问题>,最近看到有人提出弱密钥问题,换个强密钥不就完了吗,猜测可能是与第三方对接导致很无奈不能更换密钥,所以产生本文解 ...
- java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
java 中32位秘钥长度的 3des加密方法? java 中 3des加密 默认是24位秘钥的 现在需求是 32位秘钥加密 尝试很多种方法 解决 结果都不正确 // 密钥 private final ...
- Des与3Des加密解密
/// <summary>/// Des和3Des算法/// </summary>public class Des{/// <summary>/// Des加密// ...
- java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )
在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请求数据时需要用的3des加密.如果想要请求接口,则需要javascript的加密与java相 ...
- java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释
Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...
- Java中3DES加密解密示例
在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...
最新文章
- boost的chrono模块等待按键的测试程序
- mysql 查询某个字段SQL语句【mysql语句】
- 后缀表达式的值(信息学奥赛一本通-T1331)
- Redis之jedis连接池
- python操作sqlite数据库_Python操作Sqlite正确实现方法解析
- 编程真可怕,我们日常都在写 Bug
- 读图时代,图片容量大、传输难、打开慢怎么办?
- 包邮送50本数据分析,MySQL,Python相关书籍
- 阵列天线的优化综合-赋形方向图
- AudioTrack音频播放
- 暴走英雄坛服务器维护到什么时候,各位侠士久等了,暴走英雄坛1.8.1新版本更新前瞻一览。我们...
- matlab 颜色半透明,使用matlab画半透明椭圆
- 面试必问 K8S 的经典题目,来看看你会几个?
- GitGitHub 笔记
- 微信红包封面免费送!!!
- WPF教程(二) WPF vs WinForms
- typescript 装饰器
- /lib//libclntsh.so: file format not recognized; treating as linker script
- Nginx--Rewrite重写
- xp无法访问win7计算机提示无权限,ghost xp访问win7共享无权限怎么解决