学习3DES加密算法笔记
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加密算法笔记的更多相关文章
- hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse
生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...
- 轻松学习RSA加密算法原理 (转)
轻松学习RSA加密算法原理 (转) http://blog.csdn.net/q376420785/article/details/8557266 http://www.ruanyifeng.com/ ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- 开始记录学习java的笔记
今天开始记录学习java的笔记,加油
- 菜鸟教程之学习Shell script笔记(上)
菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...
- DES和3DES加密算法C语言实现【转】
转自:https://blog.csdn.net/leumber/article/details/78043675 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- 3DES加密算法32个字节
简介 最近开发的一个项目,使用到了3DES加密算法,加密socket服务端和客户端通信的报文,因为加密秘钥是32个字节,结果折腾了一番,现在记录下来分享! 1.Des3EncryptUtils.jav ...
- hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览
对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看star ...
- 深度学习Keras框架笔记之AutoEncoder类
深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction= ...
随机推荐
- eclipse Android项目 DDMS db文件 导出 Failed to pull selection null 问题
我在 eclipse的Android项目中,在 DDMS导出db文件 时,发现报错:Failed to pull selection null 在左侧选中设备,在进行导出 这样就可以正常的进行导出db ...
- jQuery 入口函数主要有4种写法
jqery 入口函数主要有4种写法,其中以第3种方法最为方便. <!DOCTYPE html> <html lang="en"> <head> ...
- holer实现外网访问本地网站
外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是8 ...
- CentOS6.5 安装vncserver实现图形化访问
一. 安装gnome图形化桌面 #yum groupinstall -y "X Window System" #yum groupinstall -y "Desktop& ...
- Tomcat配置SSL后使用HTTP后跳转到HTTPS
Tomcat配置好SSL后将HTTP请求自动转到HTTPS需要在TOMCAT/conf/web.xml的未尾加入以下配置: <login-config> <!-- Authoriza ...
- configparser模块(ini配置文件生成模块)
config = configparser.ConfigParser() #初始化config对象 [DEFAULT] #设置默认的变量值,初始化 config["DEFAULT" ...
- (转)hibernate 之hiberante.hbm2ddl.auto 参数的配置
我们在搭建环境的时候,在配置文件中有一个属性标签为: 完整配置如下 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernat ...
- mysql新增用户并开启远程连接
之前使用mysql一直使用root来连接登录数据库,现在想使用新的用户名来连接数据库,碰到数据连接不上的情况. 把这些记录下来,以备后用 1.首先,创建用户 CREATE USER 'xiazhenx ...
- Python中使用多进程来实现并行处理的方法小结
进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念: 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和 ...
- 在IE浏览器中url传参长度问题
1.在这之前我一直以为,应该说是并没有去思考过,url地址传参的长度限制问题:知道在项目材料价格系统中遇到之后,才对这个问题进行了具体的探索.IE中最大的长度限制为2084个,用于get传递数据的长度 ...