首页 > 其他 > 详细

酷狗.Krc加密歌词解析

时间:2014-11-10 19:30:41      阅读:201      评论:0      收藏:0      [点我收藏+]
 1 function KrcToLrc(filename: string): string;
 2   function ZDecompressStr2(const S: TBytes): UTF8String;
 3   var
 4     BIn, BOut: TBytes;
 5   begin
 6     BIn := S;
 7     ZDecompress(BIn, BOut);
 8     Result := TEncoding.UTF8.GetString(BOut);
 9   end;
10 
11 const
12     miarry: array [0 .. 15] of Char = (@, G, a, w, ^, 2, t, G,
13     Q, 6, 1, -, Î, Ò, n, i);
14 var
15   Stream: TFileStream;
16   Top: array [0 .. 3] of byte;
17   k, j, l: Integer;
18   zip_byte: TBytes;
19   FileNameBuff: string;
20 begin
21   FileNameBuff := ExtractFileExt(LowerCase(filename));
22   if FileNameBuff <> .krc then begin
23     result:=‘‘;
24     Exit;
25   end;
26 
27   Stream := TFileStream.Create(filename, fmOpenReadWrite);
28   try
29     j := Stream.SIZE;
30     SetLength(zip_byte, j - 4);
31     Stream.read(Top, 4);
32     Stream.read(zip_byte, j - 4);
33   finally
34     Stream.Free;
35   end;
36 
37   for k := Low(zip_byte) to High(zip_byte) do begin
38     l := k mod 16;
39     zip_byte[k] := zip_byte[k] xor byte(miarry[l]);
40   end;
41 
42   result:= ZDecompressStr2(zip_byte);
43 
44  end;

对应的Delphi版本为Unicode版本  D7的Ansi版本不使用,添加System.Zlib即可使用

酷狗的异或加密串是从一位JAVA那边得到的

Top4字符是加密文件头,用于校验

Zip_byte是正文

酷狗.Krc加密歌词解析

原文:http://www.cnblogs.com/ab0416/p/4087572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!