import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.SecureRandom; import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory; import org.apache.commons.codec.digest.DigestUtils; /**
* HTTPS组件
* @author bestmata
*
*/
public class HTTPSCoder { private static final String TLS="TLS"; private static final String SSL="SSL"; /**
* 获取keyStore
*
* @param keyStorePath
* @param pwd
* @return
* @throws Exception
*/
private static KeyStore getKeyStore(String keyStorePath,String pwd) throws Exception{
KeyStore ks=KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream in=new FileInputStream(keyStorePath);
ks.load(in, pwd.toCharArray());
in.close();
return ks;
} /**
* 获取SSLSocektFactory
*
* @param keyStorePath
* @param pwd
* @param trustStorePath
* @return
* @throws Exception
*/
private static SSLSocketFactory getSSLSocketFactory(String keyStorePath,String pwd,String trustStorePath) throws Exception{
//实例话密匙库
KeyManagerFactory keyManageF=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore ks=getKeyStore(keyStorePath, pwd);
//初始化密匙工厂
keyManageF.init(ks, pwd.toCharArray());
//实例化信任库
TrustManagerFactory trustManageF=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
//获得信任库
KeyStore trustStore=getKeyStore(trustStorePath, pwd);
trustManageF.init(trustStore);
//实例化SSL上下文
SSLContext ctx=SSLContext.getInstance(TLS);
ctx.init(keyManageF.getKeyManagers(), trustManageF.getTrustManagers(), new SecureRandom());
return ctx.getSocketFactory();
} public static void configSSLSocketFactory(HttpsURLConnection conn,String keyStorePath,String pwd,String trustStorePath) throws Exception{
SSLSocketFactory sslSocketFactory=getSSLSocketFactory(keyStorePath, pwd, trustStorePath);
conn.setSSLSocketFactory(sslSocketFactory); } public static void main(String[] args) {
System.out.println("e10adc3949ba59abbe56e057f20f883e");
System.out.println(DigestUtils.md5Hex("123456"));
} }

java安全HTTPS工具类的更多相关文章

  1. java Https工具类

    import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import ja ...

  2. Java操作Redis工具类

    依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...

  3. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  4. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  5. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  6. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

  7. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  8. 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。

    1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...

  9. JAVA 8 日期工具类

    JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...

随机推荐

  1. Thrift初用小结

    thrift --gen  csharp  search.thrift thrift --gen java search.thrift Thrift是facebook的一个技术核心框架,07年四月开放 ...

  2. 【转】仿Android 联系人SideBar排序,根据拼音A-Z字母快速导航,以及输入搜索条件过滤,显示姓名的文字图片

    1.首先我们把这几个工具类拷贝到自己的项目中,这些都是很常见的类: CharacterParser       –这是用来把中文转成拼音的工具类 PinyinComparator   –拼音首字母的比 ...

  3. Android Dialog透明度和暗度

    1.设置透明度(Dialog自身的透明度)WindowManager.LayoutParams lp=dialog.getWindow().getAttributes(); lp.alpha=1.0f ...

  4. CDH5 安装过程

    一.环境 1.1 操作系统 $ cat /etc/redhat-release CentOS release 6.5 (Final) 1.2 Java环境 $ java -version java v ...

  5. 动画Rig设置为Legacy

    The animation state AimUp could not be played because it couldn't be found!Please attach an animatio ...

  6. vim 学习相关记录

    VIM 相关内容****************** vim 的三个模式: 编辑模式 --> 输入模式 --> 末行模式 编辑模式: 通常键入键盘值被理解成一个操作; 如: dd(删除行) ...

  7. android核心服务初探

    终于进入android学习的进阶阶段,第一个课题是android的核心服务.首先,让我们来认识一下核心服务. android核心服务与app服务有所区别.app服务继承自Service基类,在app运 ...

  8. 使用<br>标签分行显示文本

    对于上一小节的例子,我们想让那首诗显示得更美观些,如显示下面效果: 怎么可以让每一句诗词后面加入一个折行呢?那就可以用到<br />标签了,在需要加回车换行的地方加入<br /> ...

  9. Char Varchar Nvarchar区别

    char和varchar是一样的字符型,不同在于,varchar比char更灵活,精确,且不占内存空间,当你取同样的字符时,char会在该字符后面加上空格,而varchar则只取得这个字符,比如有字段 ...

  10. mktime性能问题

    #include <time.h> int main() { for (int i = 0; i < 100000; ++i) { struct tm tm = {}; tm.tm_ ...