`
liuzhifeixff
  • 浏览: 2894 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java 2012QQ空间最新加密方式

阅读更多
QQ空间在5月31日抛弃了旧时的加密方式,使用了新的加密方式,下面就是java版的 2012QQ空间加密核心代码.

C# 版本地址: http://blog.csdn.net/xiaolajiao958/article/details/7621750

代码需要优化的,大家自己优化.呵呵.

欢迎提供更好的建议.

    public static final String HEXSTRING = "0123456789ABCDEF";
    
    public static String md5(String originalText) throws Exception {
        byte buf[] = originalText.getBytes("ISO-8859-1");
        StringBuffer hexString = new StringBuffer();
        String result = "";
        String digit = "";

        try {
            MessageDigest algorithm = MessageDigest.getInstance("MD5");
            algorithm.reset();
            algorithm.update(buf);

            byte[] digest = algorithm.digest();

            for (int i = 0; i < digest.length; i++) {
                digit = Integer.toHexString(0xFF & digest[i]);

                if (digit.length() == 1) {
                    digit = "0" + digit;
                }

                hexString.append(digit);
            }

            result = hexString.toString();
        } catch (Exception ex) {
            result = "";
        }

        return result.toUpperCase();
    }

    public static String hexchar2bin(String md5str) throws UnsupportedEncodingException 
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(md5str.length() / 2);

        for (int i = 0; i < md5str.length(); i = i + 2)
        {
            baos.write((HEXSTRING.indexOf(md5str.charAt(i)) << 4 |
                    HEXSTRING.indexOf(md5str.charAt(i + 1))));
        }
        
        return new String(baos.toByteArray(), "ISO-8859-1");
    }
    
    /**
     * 
     * @param qq http://check.ptlogin2.qq.com/check?uin={0}&appid=15000101&r={1} 返回的第三个值
     * @param password QQ密码
     * @param verifycode 验证码
     * @return 加密后的密码
     * @throws UnsupportedEncodingException
     * @throws Exception
     */
    public static String GetPassword(String qq,String password, String verifycode) throws Exception{
        
        String P = hexchar2bin(md5(password));
        String U = md5(P + hexchar2bin(qq.replace("\\x", "").toUpperCase()));
        String V = md5(U + verifycode.toUpperCase());
        
        return V;
    }
1
2
分享到:
评论
5 楼 lhf1990729 2012-12-31  
果然是cookie的缘故,现在登录成功!tks/
4 楼 lhf1990729 2012-12-28  
这是第一次登陆的时候。我用fd抓包的内容。直接放进去了.
3 楼 lhf1990729 2012-12-28  

try {
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl
.openConnection();
conn.setRequestMethod("GET");
conn.addRequestProperty("Accept", "*/*");
conn.addRequestProperty("Accept-Language", "zh-cn");
conn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; YYGameAll_1.2.167057.92; Windows NT 5.1; Trident/4.0; GTB7.3; QQDownload 718; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
conn.addRequestProperty("Accept-Encoding", "gzip, deflate");
conn.addRequestProperty("Connection", "Keep-Alive");
conn.addRequestProperty("Cookie", "pgv_info=pgvReferrer=&ssid=s9173889104; ptisp=ctc; pgv_pvid=4366046720; ptui_loginuin=457319664; pt2gguin=o0457319664; RK=qnh6IDjykm; uikey=1c52443b0a164ad8f144f6e2efca8dedb71e2e49d420cfe11d022be5bf7d14ec; chkuin=457319664; confirmuin=457319664; ptvfsession=5603687b36929b359c5fba3297d52c2c553443dc4a71c81db819084f404bf71b21d28c5d624071003e546997bc7db76b; ETK=; ptuserinfo=7762737463; ptcz=5e55df2f52db59aba85017e85758a2d1c2678b3552c75451656a4c94c187d244");

conn.connect();
if (conn.getHeaderFields().get("Set-Cookie") != null) {
for (String s : conn.getHeaderFields().get("Set-Cookie")) {
cookie += s;
}
}
InputStream ins = conn.getInputStream();

String charset = "UTF-8";
InputStreamReader inr = new InputStreamReader(ins, charset);
BufferedReader bfr = new BufferedReader(inr);

String line = "";
StringBuffer res = new StringBuffer();
do {
res.append(line);
line = bfr.readLine();
} while (line != null);
return res.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
2 楼 liuzhifeixff 2012-12-04  
lhf1990729 写道
1-checkurl:http://check.ptlogin2.qq.com/check?uin=457319664&appid=1003903&r=0.1140832570978344
1-returnurl:ptui_checkVC('0','!Z2P','\x00\x00\x00\x00\x1b\x42\x24\xf0');
2-CheckVER:http://ui.ptlogin2.qq.com/cgi-bin/ver
2-ReturnVER:ptuiV(201211050930);
3-firsturl:http://ptlogin2.qq.com/login?u=457319664&p=加密后的密码&verifycode=!Z2P&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D0%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=2-17-7469&mibao_css=m_webqq&t=1&g=1
3-returnurl:ptuiCB('4','3','','0','登录失败,请重试。*', '457319664');

这是我的基本步骤。但是一直失败。。报这个错。大哥能帮我分析下吗...

保存cookie请求了吗
1 楼 lhf1990729 2012-11-12  
1-checkurl:http://check.ptlogin2.qq.com/check?uin=457319664&appid=1003903&r=0.1140832570978344
1-returnurl:ptui_checkVC('0','!Z2P','\x00\x00\x00\x00\x1b\x42\x24\xf0');
2-CheckVER:http://ui.ptlogin2.qq.com/cgi-bin/ver
2-ReturnVER:ptuiV(201211050930);
3-firsturl:http://ptlogin2.qq.com/login?u=457319664&p=加密后的密码&verifycode=!Z2P&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D0%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=2-17-7469&mibao_css=m_webqq&t=1&g=1
3-returnurl:ptuiCB('4','3','','0','登录失败,请重试。*', '457319664');

这是我的基本步骤。但是一直失败。。报这个错。大哥能帮我分析下吗...

相关推荐

    最新java模拟登陆QQ空间【2017-12-22】有效

    最新Java模拟登陆QQ空间【2017-12-22】有效 代码在2017-12-22编写完成并测试通过! 功能: 1.获取QQ空间qzonetoken值 2.构造p参数加密方式getEncryption(QQ密码,QQ账号[16进制标识],验证码,false); 3.获取g_tk算法...

    基于属性的加密方法实现,cpabe属性加密JAVA源码实现

    系统参数定义了加密算法的安全性和属性空间。管理员密钥则用于生成用户密钥,这些密钥与用户的属性集相关联。 2. **用户密钥生成器(User Key Generation, UKG)**:使用管理员密钥和用户的属性集,可以生成用户的...

    最新版java模拟QQ登录空间

    【Java模拟QQ登录空间】是Java编程领域中的一个实践项目,主要目的是通过编程技术实现对QQ空间的模拟登录。这个项目对于学习Java网络编程、HTTP协议、JSON解析以及网络安全等多方面知识具有重要意义。 首先,Java是...

    Blog.rar_QQ空间 java_QQ空间jsp_blog_java qq空间_servlet blog

    这篇博客主要探讨的是如何使用Java技术栈来构建一个类似于QQ空间的登录注册系统,并实现个人主页功能。在Java Web开发中,这样的应用通常基于经典的三层架构:表现层(JSP)、业务逻辑层(Servlet)和数据访问层。...

    三平台通用加密算法(java/.net/Object-C)

    .NET平台也有自己的加密框架,即System.Security.Cryptography命名空间。它提供了对各种加密标准如AES、RSA、SHA等的实现。`.Net.txt`可能包含了.NET平台下实现的加密代码示例或指南。 对于Objective-C,它是Apple ...

    JAVA仿QQ通讯

    7. **数据加密与安全**: 为了保护用户的隐私,系统的登录、传输过程可能采用了加密技术,如SSL/TLS协议,或者使用Java的加密库进行数据加密。 8. **状态管理与会话保持**: 为了实现用户登录状态的保持和不同页面间...

    C#RSA加密DEMO

    在IT行业中,加密技术是确保数据安全的重要手段之一...在实际应用中,通常会用RSA加密一个随机生成的对称密钥,然后用这个对称密钥去加密大量数据,这种方式称为混合加密。这种做法结合了RSA的安全性和对称加密的效率。

    JAVA-QQ2004.rar_JAVA QQ20_java qq2004_javaqq2004_qq2004 for ja_w

    7. **安全机制**:考虑到隐私保护,JAVA-QQ2004可能会有加密传输和身份验证机制,确保用户的聊天内容和个人信息不被窃取。 8. **服务端架构**:与客户端对应的是强大的服务端架构,负责处理大量的并发连接和消息...

    java开源包6

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包9

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包4

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包101

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    Java资源包01

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包5

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包8

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包10

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java QQ聊天程序源代码

    以上就是关于"java QQ聊天程序源代码"的一些关键知识点,虽然标题提到的是"java",但描述中明确指出是C#编写的,因此这里主要讨论的是C#相关的编程技术。对于文件列表中的`Client.java`,这可能是Java版本的客户端...

    c# RSA读取密钥文件pfx cer 签名验签加密解密工具类 1 包含java形式密钥转换成c# c# 形式密钥转换成java

    在IT行业中,尤其是在网络安全和数据保护领域,RSA算法是一种广泛使用的非对称加密技术,用于数字签名、数据加密和解密。本项目涉及到C#语言实现的RSA工具类,包括读取不同格式的密钥文件(如PFX和CER)、进行签名...

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    Java聊天工具 Java聊天工具 Java聊天工具

    通过分析源码,我们可以深入理解各个功能的具体实现方式,学习如何利用Java语言和相关库构建聊天应用。 总的来说,这个Java聊天工具项目涵盖了Java GUI编程、网络通信、多线程、数据结构、事件处理、系统集成等多个...

Global site tag (gtag.js) - Google Analytics