Java中请求HTTPS加密的源代码

import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import java.util.*;
import javax.net.ssl.*;

public class HttpsTest {
    // We would never hardcode this literal in a real system,
    // this is only for this article.
    private String url = "https://localhost/";

    // Create an anonymous class to trust all certificates.
    // This is bad style, you should create a separate class.
    private X509TrustManager xtm = new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] chain, String authType) {}

            public void checkServerTrusted(X509Certificate[] chain, String authType) {
                System.out.println("cert: " + chain[0].toString() + ", authType: " + authType);
            }

            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
    };

    // Create an class to trust all hosts
    private HostnameVerifier hnv = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            System.out.println("hostname: " + hostname);
            return true;
        }
    };

    // In this function we configure our system with a less stringent
    // hostname verifier and X509 trust manager.  This code is
    // executed once, and calls the static methods of HttpsURLConnection
    public HttpsTest() {
        // Initialize the TLS SSLContext with
        // our TrustManager
        SSLContext sslContext = null;

        try {
            sslContext = SSLContext.getInstance("TLS");
            X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
            sslContext.init(null, xtmArray, new java.security.SecureRandom());
        } catch(GeneralSecurityException gse) {
            // Print out some error message and deal with this exception
        }

        // Set the default SocketFactory and HostnameVerifier
        // for javax.net.ssl.HttpsURLConnection
        if(sslContext != null) {
            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        }

        HttpsURLConnection.setDefaultHostnameVerifier(hnv);
    }

    // This function is called periodically, the important thing
    // to note here is that there is no special code that needs to
    // be added to deal with a "HTTPS" URL.  All of the trust
    // management, verification, is handled by the HttpsURLConnection.
    public void run() {
        try {
            URLConnection urlCon = (new URL(url)).openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
            String line;

            while((line = in.readLine()) != null) {
                System.out.println(line);
            }

        //  Whatever we want to do with these quotes
        } catch(MalformedURLException mue) {
            mue.printStackTrace();
        } catch(IOException ioe) {
            ioe.printStackTrace();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        HttpsTest httpsTest = new HttpsTest();
        httpsTest.run();
    }

时间: 2024-10-30 02:48:51

Java中请求HTTPS加密的源代码的相关文章

求java中常用的加密、解密算法?

问题描述 求java中常用的加密.解密算法? 页面提交的密码.电话等信息通常需要加密后存放到数据库里,在个人信息展示时通常需要进行解密,如何实现?求案例或者思路. 解决方案 常用加密解密算法java常用的加密,解密,数字签名等APIJava Cipher类 DES算法(加密与解密) 解决方案二: 这个其实在百度里搜一下,到处都有答案,现提供一个参考文章:http://www.blogjava.net/amigoxie/archive/2014/07/06/415503.html 解决方案三: h

java怎么请求https获取响应的文件流呢?

问题描述 java怎么请求https获取响应的文件流呢? 现在有一个https的地址,请求这个地址后返回一个文件流,试着用了httpclient发送https请求,然后在返回的http实体中httpEntity.getContent获取到了一个Inputstream,接收了这个流后,没有任何东西返回. 有什么其他的办法吗? 解决方案 确认后台是否返回数据流了 解决方案二: 先查看一下返回了数据没,用其它测试工具看是否也没返回 解决方案三: 把流的内容读出来,输出到控制台或者文件中看看.

java后台请求https协议返回xml怎么解决?

问题描述 java后台请求https协议返回xml怎么解决? 我在做一个跟第三方支付对接,现在做到了查询支付结果这里,它们给的接口是异步请求他们的地址,但是他们的协议是https的,直接ajax请求没有权限.后台我又在后台请求,结果报ssl错误,我的jdk版本是1.7_11版本的,tomcat5.5的,请求地址是https://payment.dinpay.com/MQueryOrder.do 返回一段xml,求高手帮我在后台请求这个地址,然后把这个xml以字符串的形式返回,非常感谢

密钥生成器-java中的 DES 加密与解密

问题描述 java中的 DES 加密与解密 DES类 package dao; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class DES { public static String ALGORITHM_DES="DES"; //加密算法的名称 public sta

Java中常用的加密方法(JDK)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 -- ) http://secur

java中使用DES加密解密实例_java

在前面介绍了一些加密解密类的使用,这里综合起来做一个简单的测试,代码如下: MainActivity: 复制代码 代码如下: package com.home.testdes; import android.os.Bundle;import android.util.Log;import android.app.Activity; public class MainActivity extends Activity {  @Override protected void onCreate(Bun

java中如何使用MD5进行加密_java

在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉. (一)消息摘要简介 一个消息摘要就是一个数据块的数字指纹.即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组).消息摘要是一种与消息认证码结合使用以确保消息完整性的技术.主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法

java类的问题-JAVA中的继承与封装以及循环

问题描述 JAVA中的继承与封装以及循环 求一份JAVA中的汽车租赁系统源代码,谢谢!!(北大青鸟的课后题)

谷歌HTTPS透明度报告:逾75%服务器请求使用加密连接

谷歌公布HTTPS加密连接的部署情况 北京时间3月16日消息,据科技博客TechCrunch报道,谷歌周二在其透明度报告中增加了一个新板块--超文本传输安全协议(HTTPS)的实施情况,专注于介绍谷歌自主网站和各大热门网站的加密部署情况. 谷歌称,在发送到公司服务器的请求中,超过75%使用了加密连接.不过,该报告并不包含YouTube流量. 逾75%服务器请求使用加密连接 在谷歌所有产品中,Gmail和云端硬盘在HTTPS部署上遥遥领先,这两款服务现在默认使用HTTPS连接.地图和广告产品等使用