码迷,mamicode.com
首页 > 其他好文 > 详细

酷狗.Krc加密歌词解析

时间:2014-11-10 19:31:55      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   java   sp   for   

 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加密歌词解析

标签:style   blog   io   color   ar   使用   java   sp   for   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!