3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法

1,KeyGenerator类:public class KeyGenerator extends Object此类提供(对称)密钥生成器的功能

2,DESedeKeySpec类:public class DESedeKeySpec extends Objectimplements KeySpec此类指定一个 DES-EDE ("triple-DES") 密钥。

3,SecretKeyFactory 类:public class SecretKeyFactory  extends Object此类表示秘密密钥的工厂。

密钥工厂用来将密钥(类型 Key 的不透明加密密钥)转换为密钥规范(基础密钥材料的透明表示形式),反之亦然。秘密密钥工厂只对秘密(对称)密钥进行操作。

密钥工厂为双工模式,即其允许根据给定密钥规范(密钥材料)构建不透明密钥对象,或以适当格式检索密钥对象的基础密钥材料。

4,Environment类:public abstract class Environment extends Object用于 Request 操作的异常的容器 (holder),使异常可用于客户端。Environment 对象是使用 ORB 的方法 create_environment 创建的。

生成key所用的方法:

方法一:public static final KeyGenerator getInstance(String algorithm) throws NoSuchAlgorithmException

功能:为指定算法生成一个KeyGenerator对象。如果默认提供程序包提供所请求密钥生成器的实现,则返回包含该实现的KeyGenerator实例。如果默认提供程序包中不存在请求的密钥生成器,则搜索其他提供程序包。

          参数:algorithm - 所请求的密钥算法的标准名称。

方法二:public final void init(SecureRandom random)
功能:初始化此密钥生成器。
参数:random - 此生成器的随机源
方法三:public final SecretKey generateKey()
功能:生成一个密钥。
返回:新的密钥
方法四:public final byte[] getEncoded(String format)throws IOException 功能:返回以指定方案编码的参数。如果 format 为 null,则使用参数的基本编码格式。如果这些参数的 ASN.1 规范存在,则基本编码格式即为 ASN.1。

参数:

format - 编码格式的名称。
返回:使用指定的编码方案编码的参数。
抛出:IOException - 如果发生编码错误,或者尚未初始化此参数对象。
转化key所用的方法:
方法一:
DESedeKeySpec(byte[] key)
功能:创建一个DESedeKeySpec对象,使用 key 中的前 24 个字节作为 DES-EDE 密钥的密钥内容。
方法二:public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException

功能:生成指定秘密密钥算法的 SecretKeyFactory 对象。如果默认提供程序包提供请求工厂的实现,则返回包含该实现的一个 SecretKeyFactory 实例。

如果默认的提供程序包中不存在请求的工厂,则将搜索其他提供程序包。
     参数:algorithm - 请求的秘密密钥算法的标准名称。
    返回:指定密钥算法的 SecretKeyFactory 对象。
    抛出: NullPointerException : 如果指定的算法为 null。

NoSuchAlgorithmException: 如果默认提供程序包中或搜索到的任何其他提供程序包中不存在指定算法的秘密密钥工厂。

方法三:public final SecretKey generateSecret(KeySpec keySpec) throws InvalidKeySpecException

功能:根据提供的密钥规范(密钥材料)生成 SecretKey 对象。
         参数:keySpec - 秘密密钥的规范(密钥材料)  DESedeKeySpec类的对象

返回:秘密密钥

抛出:InvalidKeySpecException - 如果给定密钥规范不适合生成秘密密钥的秘密密钥工厂。

学习3DES加密算法笔记的更多相关文章

  1. hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse

    生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...

  2. 轻松学习RSA加密算法原理 (转)

    轻松学习RSA加密算法原理 (转) http://blog.csdn.net/q376420785/article/details/8557266 http://www.ruanyifeng.com/ ...

  3. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  4. 开始记录学习java的笔记

    今天开始记录学习java的笔记,加油

  5. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  6. DES和3DES加密算法C语言实现【转】

    转自:https://blog.csdn.net/leumber/article/details/78043675 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  7. 3DES加密算法32个字节

    简介 最近开发的一个项目,使用到了3DES加密算法,加密socket服务端和客户端通信的报文,因为加密秘钥是32个字节,结果折腾了一番,现在记录下来分享! 1.Des3EncryptUtils.jav ...

  8. hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

    对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看star ...

  9. 深度学习Keras框架笔记之AutoEncoder类

    深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction= ...

随机推荐

  1. 初读"Thinking in Java"读书笔记之第三章 --- 操作符

    更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...

  2. Django中STATIC_URL、STATIC_ROOT、STATICFILES_DIRS 的区别关系

    首先,我们配置静态文件,要在setting.py里面加入如下几行代码: settings.py # the settings above # STATIC SETTINGS STATIC_URL = ...

  3. CSS多行文字超出隐藏加省略号

    overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 限制行数 overflow: hidden; text-overflow: ...

  4. CNN

    <卷积神经网络详述> <卷积神经网络——雨石博客>      学习参考:http://blog.csdn.net/stdcoutzyx/article/details/4159 ...

  5. 精进之路之volatile

    volatile 首先了解下Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他 ...

  6. zsh 缺省输入设置

    zsh 默认缺省方式和bash不兼容,终端输入指令带有* 并不能对所有以已经输入的部分作为开头的文件作处理,解决这个问题的方式是在.zshrc文件中加入 setopt no_match 即可

  7. (原创)列主元Gauss消去法的通用程序

    import numpy as np np.set_printoptions(precision=5) A = np.array([[31., -13., 0., 0., 0., -10., 0., ...

  8. 搭建、访问ftp

    FTP是文件传输协议,是在网络上进行文件传输的协议,使用的是C/S模式,属于网络传输协议的应用层.FTP是讲文件从一台计算机传送到另一台计算机上,不受操作系统的限制,TCP端口号是21,数据库端口号是 ...

  9. 周强 201771010141《面对对象程序设计(java)》第十周学习总结

    ---恢复内容开始--- 1.实验目的与要求 (1) 理解泛型概念: (2) 掌握泛型类的定义与使用: (3) 掌握泛型方法的声明与使用: (4) 掌握泛型接口的定义与实现: (5)了解泛型程序设计, ...

  10. 2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...