QQ加密算法(MD5与Base64)

其实QQ用到Base64算法的地方不多!快速登陆用到了Base64(TM与QQ切换过程中用到的)QQ用密码的一次MD5 HASH通过Base64加密得到的 参数中的 PWDHASH
 
具体参数如下
"路径/QQ.exe" /START QQUIN:QQ号码 PWDHASH:Base64(MD5(你的密码)) /STAT:40
 
运行QQ.exe的路径
/STAT 40为隐身 其他为正常登陆
 
取得PWSHASH函数如下(用到的单元全在下面可以Down到的)
function GetPWDHash(PassWD: string): string;
type
  TempChar = array[0..15] of char;
var
  Temp: array[0..15] of Byte;
  i: integer;
begin
  Result := '';
  MD5Init(@Temp);
  MD5Append(@Temp, PByte(PChar(PassWD)), Length(PassWD));
  Result := Base64Encode(TempChar(Temp){类型强制转换});
end;
 
我将Delphi的UniMd5.pas 和 UniBase64.pas都上传我的个人主页空间中了
 
http://didi.99ss.com/AboutTencentQQ/UniBase64.pas 这里的Base64是我见过代码最长运算速度最快的Base64写法值得看啊,CSDN上也有好多.你自己TimeGettime看看.
 
还有刚才说的TEA算法
 
Didi 无聊第三篇! , QQ:55511 MSN:banzcn@hotmail.com EMail:banzcn@gmail.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
早就知道C#是.net平台最好的编程语言,以简洁高效著称,但是一直没有去尝试,今天终于打开VisualStudio来一睹C#的风采,不试不知道,原来C#这么好用! 原来总以为C#有些难学,但是上手才发现,原来一切是如此简单,如果你之前非常熟悉VC和Java的编程方法,那么,C#入门不用半个小时。 熟悉VC使你可以更快的适应Visual C#的开发环境,毕竟都是微软自家的东西,而熟悉Java你可以对C#语言快速上手,因为C#和Java是非常相似的!我很庆幸自己之前已经比较熟练的使用VC和Java了,整个C#入门用了不到半个小时,而从初次接触C#到开发这个QQ自动登录器也只用了短短的几个小时,下面,我就给大家讲讲如何用C#开发一个QQ自动登录器,让大家真正体会到C#的强大魅力! 现在拥有QQ的人已经很多了,而且不少人同时拥有几个账号,遗憾的是QQ只能设置一个号码自动登录,如果想同时登录几个账号那么必须一个一个手动输入,因此,网上也出现了不少QQ自动登录器,这究竟是怎么实现的呢?其实原理非常简单。 QQ是支持命令行登录的,也就是说QQexe程序支持参数,下面举一个参数登录的例子: e:\qq\qq.exe /START QQUIN:00000000 PWDHASH:4QrcORm6Wau+VuBX9g+IPg== /STAT:41 比如有上面这个参数,前面的e:\qq\qq.exeQQ的程序路径,/START QQUIN:是保留字段,后面紧跟的就是需要登录的QQ号码,PWDHASH:是保留字段,后面紧跟的是该QQ号码的密码,不过这个密码是加密的,我们等下再说,/STAT:41是表示登录状态,其中41表示正常登录,而40表示隐身,目前一直到QQ2009好像只支持这两个状态,不支持其他诸如忙碌,静音,离开等状态,有了这个参数,我们实现自动登录就方便多了! 这个参数里面其他都好说,唯独这个加密的密码我们不好处理,因为我们必须把密码转换为加密方式,其实,QQ密码的加密方式也是非常简单的,先用MD5HASH进行一次加密,然后把结果再用一次Base64加密即可得到这个加密字符串,有了这个信息,我们剩下的就好办多了! 很幸运的是用C#处理这个加密非常简单,有个Convert.ToBase64String(byte[])可以直接进行base64加密,而System.Security.Cryptography这个系统类里有md5.ComputeHash这个方法直接可以进行Hash加密,所以,密码的加密也就变得很简单了,下面对这部分代码进行一个详细的说明: 首先引用系统类 using System.Security.Cryptography; 然后在任意一个按钮事件中写下如下代码: MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] pass=Encoding.Default.GetBytes("要加密QQ密码"); string command = " /START QQUIN:" + "00000000"+ " PWDHASH:" + Convert.ToBase64String(md5.ComputeHash(pass)) + " /STAT:" + "41"; 这样短短的3行代码就构造得到了QQ的登录参数command变量,剩下的只要用System.Diagnostics.Process.Start这个方法去运行这个带参数的QQ.exe就可以了! 我自己写了这个QQ自动登录的程序,比较简单,当然程序中我没用Convert.ToBase64String这个方法去用Base64加密,而是自己写了Base64加密方法,主要是为了熟悉一下C#类的使用,另外,程序中还用到了一些基本控件,比如timer,openfiledialog,listview等,适合初学者掌握一些基本控件的用法! 这里我把源码一并给出,这也是我第一个C#上手程序,虽然只用了短短几个小时,但是我已经可以体会到C#强大的功能,今后还会继续深入研究! ps:程序基本完成了自动登录的全过程,但是没有完善保存列表的功能,这个也是比较简单的,下次完善吧,就算留给你们一个课后作业,高手不要见笑,毕竟你们看来程序还是非常简单的,至少我自己写完也是有这个感觉!如果你们谁完善了别忘了发给小焱一份哦! 程序使用VisualStudio2005 编译完成,如果想单独运行请确保已经安装.net framework 2.0 框架!
好的,下面是 Java 中使用 `java.security.MessageDigest` 类库实现 MD5 加密算法的代码示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { public static void main(String[] args) { String str = "hello world"; String md5Str = getMD5(str); System.out.println(md5Str); } /** * 计算字符串的 MD5 值 * @param str 待加密的字符串 * @return 加密后的字符串 */ public static String getMD5(String str) { try { // 创建 MessageDigest 对象,并指定使用 MD5 算法 MessageDigest md = MessageDigest.getInstance("MD5"); // 将字符串转换为字节数组,并进行加密 byte[] bytes = md.digest(str.getBytes()); // 将加密后的字节数组转换为字符串 StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02x", b & 0xff)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } } ``` 在上面的代码中,我们通过 `java.security.MessageDigest` 类库来实现 MD5 加密算法。我们首先定义了一个 `getMD5` 方法,该方法接受一个字符串作为参数,并返回该字符串的 MD5 加密结果。 在该方法内部,我们首先使用 `MessageDigest.getInstance("MD5")` 方法来获取一个 `MessageDigest` 对象,该对象使用 MD5 算法进行加密。然后,我们使用 `md.digest(str.getBytes())` 方法将字符串转换为字节数组,并进行加密。最后,我们将加密后的字节数组转换为字符串,并返回该字符串作为加密结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值