Java密码学
来源:互联网 发布:ubuntu devel 编辑:程序博客网 时间:2024/05/20 04:10
代码
//基于password的对称密钥String password="";SecretKeySpec secretKeySpec=new SecretKeySpec(password.getBytes(),"");/参数二为算法, 源码规定不可为null,但是可以为无
//普通对称密钥,不能根据password得到对应密钥,需要store到文件里,才能再使用KeyGenerator keygenerator = KeyGenerator.getInstance("DES");SecretKey secretKey = keygenerator.generateKey();
这里注意, mac初始化用的是MD5算法, 和key所用的算法没有强制要求一致. key没有算法也可以(但是不安全).
理解
javax.crypto.spec.SecretKeySpec
SecretKeySpec继承了KeySpec接口和SecretKey
KeySpec
A (transparent) specification of the key material that constitutes a cryptographic key.
SecretKey接口有: (从SecretKey的父接口文档Key可知其作用)
- 这里两者的区别 :
KeySpec好比网上有各种协议 ,ftp啊, http啊等等, 但是它们的目的就是为了发送内容, 而keyspec就是这些协议, 而key|secretkey就是我们真正想操作的内容
SecretKey有以下方法
- getAlgorithm 算法名称 (
getAlgorithm
提供密钥的参考) - getEncoded (丢个传送门, 编码格式用于传输时用)
- getFormat 规范格式 (Encoded是返回内容, format是返回该内容格式的名字)
getEncoded就是刚刚比喻到的协议的名称. 而keyspec则是协议的具体细节.
SecretKeySpec继承了两个类, 说明它既带辅助的功能有能提供密钥的内容信息, SecretKeySpec提到, 它是简易版的钥匙工厂.
我们就来看看工厂类
DESKeySpec desKey = new DESKeySpec(password.getBytes());SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(desKey);
这样看来, 真得代码量多了不少.
PS : KeyFactory , 我们平时就用来生成公钥和私钥, 并不会使用来生成对称密钥
阅读全文
0 0
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- 收藏.Java.密码学
- bingo培训——需求工程
- Centos下查看cpu、磁盘、内存使用情况以及如何清理内存
- WPS尾部空格没有下划线
- Linux实际内存占用率算法,以及使用Python实现内存监控
- 学习HTML时喜爱的一段文字
- Java密码学
- 宗教信仰(并查集)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- css_day02_各种选择器基本使用(相邻兄弟选择器+,兄弟选择器~)
- java安装后path参数设置错误的解决
- 代码学习(地铁售票系统)
- linux知识总结4
- guava之ImmutableMap使用实例及好处
- Windows安装MySQL5.7.17