java加密框架_Java加密解密(一)Java加密体系基础
标签:
Java加密解密(一)Java加密体系基础
1. JCA(Java Cryptography Architecture)
提供基本的加密框架,如证书,数字签名,消息摘要和密钥对生成器。其主要实现在java.security包中。
2. JCE(Java Cryptography Extension)
在JCA的基础了作了扩展,提供了各种加密算法、消息摘要算法和密钥管理等功能。JDK提供的JCE实现主要在javax.crypto包中。
第三方提供的JCE也称为安全提供者。由于出口限制,可能需要一个或多个安全提供者,Bouncy Castle是一个轻量级的开源免费的安全提供者
3. 安全提供者
实现了java安全性的一部分或全部,它是继承自java.security.Provider的子类。
jre/lib/security/java.security文件记录了jre环境中的安全提供者
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
3.1 添加安全提供者的两种方式:
1) 在java.security文件中添加
security.provier.=
其中N越小其优先级越高,1为最大优先级
2) 使用Security类
Security.addProvider与Security.insertProviderAt方法添加或插入Provider。
Security.addProvider(new BouncyCastleProvider());
方法1)将安全提供者添加到了jre环境下,但可移植性不强,如果换个环境需要再次配置java.security文件。
方法2)通过代码显式添加了安全提供者,使程序的运行不受运行环境限制
3.2 安全提供者的属性
Provider类继承了Properties类,所以可以使用相关方法取得Provider的属性
//查看Provider提供的属性
Provider provider = new BouncyCastleProvider();
for(Map.Entry entry : provider.entrySet())
System.out.println(entry.getKey()+": "+entry.getValue());
这些属性的键定义了算法名称,值为相应算法的实现类或算法别名。
Provider内部类Service封装了这些属性,并提供了一个工厂方法获得对应的Service实例
public synchronized Service getService(String type, String algorithm)
通过如下方法可以查看Provider提供的Service类型及其算法
Map typeAlg = new HashMap();
for (Provider.Service service : provider.getServices()) {
if (!typeAlg.containsKey(service.getType()))
typeAlg.put(service.getType(), new StringBuilder());
typeAlg.get(service.getType()).append(service.getAlgorithm()).append(",");
}
for(Map.Entry entry:typeAlg.entrySet())
System.out.println(entry.getKey()+": "+entry.getValue());
BouncyCastle提供的部分Service type与algrithm如下:
Type
Algrithm
MessageDigest
SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,MD2,MD4,MD5
Cipher
AESRFC3211WRAP,AESWRAP,AES,BLOWFISH,RSA,RSA/RAW,RSA/PKCS1
Signature
SHA256WITHCVC-ECDSA,ECDSA,RIPEMD160WITHECDSA,SHA224WITHECNR,SHA224WITHCVC-ECDSA,SHA256WITHECNR,SHA224WITHECDSA,SHA384WITHECNR,SHA256WITHECDSA,SHA1WITHCVC-ECDSA,SHA384WITHECDSA,SHA512WITHECDSA,SHA1WITHECNR,SHA512WITHECNR,NONEwithECDSA,MD2WithRSAEncryption,MD4WithRSAEncryption,MD5WithRSAEncryption,SHA1WithRSAEncryption,SHA224WithRSAEncryption,SHA256WithRSAEncryption,SHA384WithRSAEncryption,SHA512WithRSAEncryption,RIPEMD160WithRSAEncryption,RIPEMD128WithRSAEncryption,RIPEMD256WithRSAEncryption,DSA,NONEWITHDSA,SHA1withRSA/ISO9796-2,MD5withRSA/ISO9796-2,RIPEMD160withRSA/ISO9796-2,RSASSA-PSS,1.2.840.113549.1.1.10,SHA1withRSA/PSS,SHA224withRSA/PSS,SHA256withRSA/PSS,SHA384withRSA/PSS,SHA512withRSA/PSS,RSA,RAWRSASSA-PSS,SHA224WITHDSA,SHA256WITHDSA,SHA384WITHDSA,SHA512WITHDSA
KeyAgreement
ECDH,ECDHC,ECMQV,DH,
标签:
java加密框架_Java加密解密(一)Java加密体系基础相关推荐
- java权限框架_Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架
权限系统在任何一个系统中都存在,随着分布式系统的大行其道,权限系统也趋向服务化,对于一个高级工程师来说,权限系统的设计是必不可少需要掌握的技术栈 Apache Shiro™是一个功能强大且易于使用的J ...
- java struts 框架_java struts 框架编程
Struts: Struts 是一个java编程的框架,它是基于MVC模式为基础的.它灵活地运用jsp和servlet技术.它是一个插件,是别人已经事先编写好的.我们只使用它的框架来设计编程,这很好的 ...
- java 翻译框架_java框架外文翻译
[经典外文翻译]--java(译文+英文)--毕业论文设计_英语学习_外语学习_教育专区.Java Java I/O 系统 对编程语言的设计者来说,创建一套好的输入输出(I/O)...... J2EE ...
- java 媒体框架_Java 媒体框架 之 JMF
如果想要使用Java中的Swing播放音乐,视频,包括录音,截取录像等等,就要用到Java的媒体框架JMF. Java媒体框架(JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节 ...
- java 简单 框架_java简单框架设计
设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者 ...
- java 分布式计算框架_java分布式系统框架的分类
鲁班学院java架构师成长路线 随着电商行业的崛起,越来越多的人为了省事更习惯网购,今天我们就来熟悉Java分布式系统中的Dubbo,Dubbo就是来解决Java分布式系统中间的子系统之间相互调用相互 ...
- java ssm框架_Java SSM框架的简单搭建
1.添加依赖包,可以通过properties统一框架版本 UTF-8 1.7 1.7 5.0.8.RELEASE junit junit 4.11 test javax.servlet javax.s ...
- java des ecb_DES ECB加解密的Java实现
package com.trq.nengyuan; import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; im ...
- java comparable接口_Java面试题之Java集合篇三
Java面试题之Java集合篇三1.HashMap和HashTable有何不同? (1)HashMap允许key和value为null,而HashTable不允许. (2)HashTable是同步的, ...
最新文章
- 网络编程--connect()、listen()、accept()
- Ubuntu apt-get 源详解
- 【笔记】MAC上使用onedrive遇到的问题及解决方法
- springboot2 cookie的token如何放入请求头_Spring MVC 到底是如何工作的
- uva 816(经典bfs例子)
- gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
- 统计 GitHub 评分、收录有意思的 README,GitHub 热点速览
- 将print的内容保存到txt文本中
- DataGridView 列自适应宽度 设置
- python线程池管理两个队列_Python 线程池使用有限大小的工作队列
- Java数据结构——代码实现顺序表的操作
- 变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计
- python 笔记之“海龟”画图 演示画小猪佩奇,机器猫
- java中decrement,Java LongAdder decrement()用法及代碼示例
- 公众号刷粉、阅读量作弊
- 怎么样可以批量下载网页图片?
- 人工蜂群算法的java代码_求人工蜂群算法的c程序源代码``````谢谢各位大神了``````...
- java jtextarea.setfont_如何在JTextArea中更改文本颜色?
- 【ZigBee 系列】| 网关的构成?用 JN51X9 的案例来讲解框架及各部分的功能
- PRD文档和交互文档(DRD)有什么区别