|
JML | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.jqql.Crypter
public class Crypter
åŠ å¯†è§£å¯†QQ消æ¯çš„工具类. QQ消æ¯çš„åŠ å¯†ç®—æ³•æ˜¯ä¸€ä¸ª16次的è¿ä»£è¿‡ç¨‹ï¼Œå¹¶ä¸”是å馈的,æ¯ä¸€ä¸ªåР坆å•元是8å—节,输出也是8å—节,密钥是16å—节 我们以prePlain表示å‰ä¸€ä¸ªæ˜Žæ–‡å—,plainè¡¨ç¤ºå½“å‰æ˜Žæ–‡å—,cryptè¡¨ç¤ºå½“å‰æ˜Žæ–‡å—åŠ å¯†å¾—åˆ°çš„å¯†æ–‡å—,preCrypt表示å‰ä¸€ä¸ªå¯†æ–‡å— fè¡¨ç¤ºåŠ å¯†ç®—æ³•ï¼Œd表示解密算法 那么从plain得到crypt的过程是: crypt = f(plain ˆ preCrypt) ˆ prePlain 所以,从crypt得到plain的过程自然是 plain = d(crypt ˆ prePlain) ˆ preCrypt æ¤å¤–,算法有它的填充机制,其会在明文å‰å’Œæ˜Žæ–‡åŽåˆ†åˆ«å¡«å……一定的å—节数,以ä¿è¯æ˜Žæ–‡é•¿åº¦æ˜¯8å—èŠ‚çš„å€æ•° å¡«å……çš„å—节数与原始明文长度有关,填充的方法是:
------- 消æ¯å¡«å……算法 -----------
a = (明文长度 + 10) mod 8
if(a ä¸ç‰äºŽ 0) a = 8 - a;
b = éšæœºæ•° & 0xF8 | a; 这个的作用是把a的值ä¿å˜äº†ä¸‹æ¥
plain[0] = b; ç„¶åŽæŠŠbåšä¸ºæ˜Žæ–‡çš„第0个å—èŠ‚ï¼Œè¿™æ ·ç¬¬0个å—节就ä¿å˜äº†a的信æ¯ï¼Œè¿™ä¸ªä¿¡æ¯åœ¨è§£å¯†æ—¶å°±è¦ç”¨æ¥æ‰¾åˆ°çœŸæ£æ˜Žæ–‡çš„èµ·å§‹ä½ç½®
plain[1 至 a+2] = éšæœºæ•° & 0xFF; è¿™é‡Œç”¨éšæœºæ•°å¡«å……明文的第1到第a+2个å—节
plain[a+3 至 a+3+明文长度-1] = 明文; 从a+3å—èŠ‚å¼€å§‹æ‰æ˜¯çœŸæ£çš„æ˜Žæ–‡
plain[a+3+明文长度, 最åŽ] = 0; 在最åŽï¼Œå¡«å……0,填充到总长度为8的整数为æ¢ã€‚到æ¤ä¸ºæ¢ï¼Œç»“æŸäº†ï¼Œè¿™å°±æ˜¯æœ€åŽå¾—到的è¦åŠ å¯†çš„æ˜Žæ–‡å†…å®¹
------- 消æ¯å¡«å……算法 ------------
Constructor Summary | |
---|---|
Crypter()
constructor æž„é€ å‡½æ•° |
Method Summary | |
---|---|
byte[] |
decrypt(byte[] in,
byte[] k)
|
byte[] |
decrypt(byte[] in,
int offset,
int len,
byte[] k)
解密 |
byte[] |
encrypt(byte[] in,
byte[] k)
|
byte[] |
encrypt(byte[] in,
int offset,
int len,
byte[] k)
åŠ å¯† |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Crypter()
Method Detail |
---|
public byte[] decrypt(byte[] in, int offset, int len, byte[] k)
in
- 密文offset
- 密文开始的ä½ç½®len
- 密文长度k
- 密钥
public byte[] decrypt(byte[] in, byte[] k)
in
- 需è¦è¢«è§£å¯†çš„密文inLen
- 密文长度k
- 密钥
public byte[] encrypt(byte[] in, int offset, int len, byte[] k)
in
- 明文å—节数组offset
- å¼€å§‹åŠ å¯†çš„åç§»len
- åŠ å¯†é•¿åº¦k
- 密钥
public byte[] encrypt(byte[] in, byte[] k)
in
- 需è¦åŠ å¯†çš„æ˜Žæ–‡inLen
- 明文长度k
- 密钥
|
JML | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |