📄 qqcode.java
字号:
import java.security.*;
import java.security.spec.*;
public class QQCode
{
public static final char[] HexDigits=
{
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd','e', 'f'
};
public static final char[] Code=
{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9','+','/'
};
private byte[] bytes;
private String qqCode;
private String md5;
private String code;
public QQCode(String code)
{
this.code=code;
}
public QQCode(byte[] codeByte)
{
bytes=codeByte;
}
public final byte[] getHashBytes()
{
try
{
byte[] strTemp = code.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
bytes = mdTemp.digest();
return bytes;
}
catch(Exception ee)
{
return null;
}
}
public final String getQQCode()
{
if(bytes==null)
{
qqCode=null;
return qqCode;
}
qqCode="";
String[] binary=new String[bytes.length];
for(int i=0;i<bytes.length;i++)
{
binary[i]=toBinary(bytes[i]);
}
String[] base=new String[(int)Math.ceil(binary.length*8.0/6.0)];
int space=binary.length%3;
int i=0;
StringBuffer text=new StringBuffer(base.length*8);
for(i=0;i<binary.length;i++)
{
text.append(binary[i]);
}
for(i=0;i<base.length-1;i++)
{
base[i]="00"+text.substring(i*6,i*6+6);
}
base[i]="00"+text.substring(i*6);
while(base[i].length()<8)
base[i]+="0";
for(String s : base)
{
qqCode+=Code[toByte(s)];
}
if(space!=0&&space!=3)
for(i=0;i<3-space;i++)
{
qqCode+="=";
}
return qqCode;
}
public final String getMD5()
{
if(bytes==null)
return null;
char str[]=new char[bytes.length*2];
int k=0;
for(int i=0;i<bytes.length;i++)
{
str[k++]=HexDigits[bytes[i]>>>4&0xF];
str[k++]=HexDigits[bytes[i]&0xF];
}
md5=new String(str);
return md5;
}
private String toBinary(byte b)
{
byte display=(byte)(1<<7);
StringBuffer buf=new StringBuffer(8);
for(int j=1;j<9;j++)
{
buf.append((display&b)==0?"0":"1");
b<<=1;
}
return buf.toString();
}
private byte toByte(String string)
{
byte result=0;
for(int i=0;i<string.length();i++)
{
if(string.charAt(i)=='1')
result+=(byte)(Math.pow(2,7-i));
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -