易飞登录密码
来源:互联网 发布:js 数组遍历 编辑:程序博客网 时间:2024/04/29 20:15
[易飞]用户密码加密解密
分类: ERP-易飞2013-10-30 08:3836人阅读评论(0)收藏举报
经常我们在做外挂为了统易飞ERP的用户和密码。
查看用户表:
密码经过加密:
福州小兵提供了D7版本的加密和解密函数:
- unit EnCode_New;
- interface
- uses SysUtils, Classes ,Dialogs ;
- const
- FNIL = '''(&.&!''%&$"''&)" ",&)$(%#$-$#$$" ' ;//NIL值
- PS1 = '&''$%"# !./,-*+()' ;//密码符
- FF1 = ' !"#$%&''()*+,-./';//符号集
- Function EnUser(s:String):string;
- //Function DeUser(s:String):string;
- Function Encode7(EnStr,s:string):string ;
- Function Decode7(EnStr,s:string):string ;
- implementation
- Function EnUser(s:String):string;
- var n,i,d:integer;
- begin
- Result := '' ;
- i := length(s) ;
- if i<=0then exit ;
- Result := Copy(FNIL,(i-1)*2+1,30-((i-1)*2)) ;
- for n:=i Downto 1do
- begin
- //if n>1 then
- // Result := Copy(Result, 3, 30) ;
- //else
- // Result := Copy(Result, 1, 30)
- i := ((Ord(s[n])-32) Mod16) ;
- d := ((Ord(s[n])-32) div16)+1 ;
- Result := Result + CHR(32+d+1) + FF1[i+1] ;
- end;
- end;
- Function Encode7(EnStr,s:string):string ;
- var i,n1,n2:integer;
- FStr1,FStr2,FStr3:Char ;
- Fchar1:Char;
- begin
- Result := EnStr ;
- IF Length(s)=0 then Exit ;
- For i:=1 to Length(s)do
- begin
- case i of
- 1..4:
- begin
- FStr1 := s[i] ; //密码符
- FStr2 := Result[i] ; //加密位置1
- FStr3 := Result[32-4+i] ; //加密位置2
- n1 := ((Ord(s[i])-32) mod 8) ;
- n2 := ((Ord(s[i])-32)div 16) ;
- Fchar1 := Chr(n2*16+32) ;//加密是什么类,数字或字母等
- //这方法错误 正确的是 两个字符异或,再取其底阶字符+20H
- n2 := Ord(FStr2) xor Ord(FStr1) ;
- {Asm
- mov eax, n2
- mov al, 0
- mov n2, eax
- end; }
- n2 := (n2 AND $0F) + $20 ; //$20= 32
- FStr2 := Chr(n2) ;
- FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod 16)) ;
- Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ;
- Result := COPY(Result,1,32-4+i-1)+FStr3+COPY(Result,32-4+i+1,4-i) ;
- end;
- else
- begin
- FStr1 := s[i] ; //密码符
- FStr2 := Result[i] ; //加密位置1
- FStr3 := Result[i-4] ; //加密位置2
- n1 := ((Ord(s[i])-32)mod 16) ;
- n2 := ((Ord(s[i])-32) div 16) ;
- Fchar1 := Chr(n2*16+32) ;//加密是什么类,数字或字母等
- n2 := Ord(FStr2) xor Ord(FStr1) ;
- n2 := (n2 AND $0F) +$20 ; //$20= 32
- FStr2 := Chr(n2) ;
- FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod16)) ;
- Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ;
- Result := COPY(Result,1,i-4-1)+FStr3+COPY(Result, i-4+1,32-i+4) ;
- end;
- end;
- end;
- end;
- Function Decode7(EnStr,s:string):string ;
- var KeyLen,i,n1,n2:integer;
- FStr1,FStr2,FStr3,FStr4:Char ;
- Fchar1:Char;
- begin
- Result := '' ;
- IF EnStr='' then Exit ;
- if Length(s)<32then //少于32位,错误
- begin
- Result := 'ERROR!' ;
- EXIT;
- END ;
- IF s=EnStr then //NIL值
- EXIT ;
- //检查密码有几位
- KeyLen:=0 ;
- for i:=10downto 1do
- if s[i]<>EnStr[i] then
- begin
- KeyLen:=i ;
- Break ;
- end;
- if KeyLen=0then Exit ;
- for i:=KeyLen Downto 1 do
- begin
- case i of
- 1..4: begin
- FStr1 := EnStr[i] ; //密码符
- FStr2 := EnStr[32-4+i] ; //加密位置1
- FStr3 := s[i] ; //加密位置2
- FStr4 := s[32-4+i] ; //加密位置1
- //n2*16+32 + (ord(FStr2) + (n2*16+32)) mod 16 ;
- n1 := ((Ord(s[i])-32)mod 8) ;
- n2 := ((Ord(s[i])-32) div 16) ;
- Fchar1 := Chr(n2*16+32) ;//加密是什么类,数字或字母等
- //这方法错误 正确的是 两个字符异或,再取其底阶字符+20H
- n2 := Ord(FStr2) xor Ord(FStr1) ;
- n2 := (n2 AND $0F) +$20 ; //$20= 32
- FStr2 := Chr(n2) ;
- FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod 16)) ;
- Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ;
- Result := COPY(Result,1,32-4+i-1)+FStr3+COPY(Result,32-4+i+1,4-i) ;
- end;
- else begin
- end
- end;
- end;
- end;
- end.
unit EnCode_New;interfaceuses SysUtils, Classes ,Dialogs ;const FNIL = '''(&.&!''%&$"''&)" ",&)$(%#$-$#$$" ' ; //NIL值 PS1 = '&''$%"# !./,-*+()' ; //密码符 FF1 = ' !"#$%&''()*+,-./'; //符号集 Function EnUser(s:String):string; //Function DeUser(s:String):string; Function Encode7(EnStr,s:string):string ; Function Decode7(EnStr,s:string):string ;implementationFunction EnUser(s:String):string;var n,i,d:integer;begin Result := '' ; i := length(s) ; if i<=0 then exit ; Result := Copy(FNIL,(i-1)*2+1, 30-((i-1)*2)) ; for n:=i Downto 1 do begin //if n>1 then // Result := Copy(Result, 3, 30) ; //else // Result := Copy(Result, 1, 30) i := ((Ord(s[n])-32) Mod 16) ; d := ((Ord(s[n])-32) div 16)+1 ; Result := Result + CHR(32+d+1) + FF1[i+1] ; end;end; Function Encode7(EnStr,s:string):string ;var i,n1,n2:integer; FStr1,FStr2,FStr3:Char ; Fchar1:Char;begin Result := EnStr ; IF Length(s)=0 then Exit ; For i:=1 to Length(s) do begin case i of 1..4: begin FStr1 := s[i] ; //密码符 FStr2 := Result[i] ; //加密位置1 FStr3 := Result[32-4+i] ; //加密位置2 n1 := ((Ord(s[i])-32) mod 8) ; n2 := ((Ord(s[i])-32) div 16) ; Fchar1 := Chr(n2*16+32) ; //加密是什么类,数字或字母等 //这方法错误 正确的是 两个字符异或,再取其底阶字符+20H n2 := Ord(FStr2) xor Ord(FStr1) ; {Asm mov eax, n2 mov al, 0 mov n2, eax end; } n2 := (n2 AND $0F) + $20 ; //$20= 32 FStr2 := Chr(n2) ; FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod 16)) ; Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ; Result := COPY(Result,1,32-4+i-1)+FStr3+COPY(Result,32-4+i+1,4-i) ; end; else begin FStr1 := s[i] ; //密码符 FStr2 := Result[i] ; //加密位置1 FStr3 := Result[i-4] ; //加密位置2 n1 := ((Ord(s[i])-32) mod 16) ; n2 := ((Ord(s[i])-32) div 16) ; Fchar1 := Chr(n2*16+32) ; //加密是什么类,数字或字母等 n2 := Ord(FStr2) xor Ord(FStr1) ; n2 := (n2 AND $0F) + $20 ; //$20= 32 FStr2 := Chr(n2) ; FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod 16)) ; Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ; Result := COPY(Result,1,i-4-1)+FStr3+COPY(Result, i-4+1, 32-i+4) ; end; end; end;end;Function Decode7(EnStr,s:string):string ;var KeyLen,i,n1,n2:integer; FStr1,FStr2,FStr3,FStr4:Char ; Fchar1:Char;begin Result := '' ; IF EnStr='' then Exit ; if Length(s)<32 then //少于32位,错误 begin Result := 'ERROR!' ; EXIT; END ; IF s=EnStr then //NIL值 EXIT ; //检查密码有几位 KeyLen:=0 ; for i:=10 downto 1 do if s[i]<>EnStr[i] then begin KeyLen:=i ; Break ; end; if KeyLen=0 then Exit ; for i:=KeyLen Downto 1 do begin case i of 1..4: begin FStr1 := EnStr[i] ; //密码符 FStr2 := EnStr[32-4+i] ; //加密位置1 FStr3 := s[i] ; //加密位置2 FStr4 := s[32-4+i] ; //加密位置1 //n2*16+32 + (ord(FStr2) + (n2*16+32)) mod 16 ; n1 := ((Ord(s[i])-32) mod 8) ; n2 := ((Ord(s[i])-32) div 16) ; Fchar1 := Chr(n2*16+32) ; //加密是什么类,数字或字母等 //这方法错误 正确的是 两个字符异或,再取其底阶字符+20H n2 := Ord(FStr2) xor Ord(FStr1) ; n2 := (n2 AND $0F) + $20 ; //$20= 32 FStr2 := Chr(n2) ; FStr3 := Chr(Ord(Fchar1) + ((Ord(FStr3)+Ord(Fchar1)) Mod 16)) ; Result := COPY(Result,1,i-1)+FStr2+COPY(Result,i+1,32-i) ; Result := COPY(Result,1,32-4+i-1)+FStr3+COPY(Result,32-4+i+1,4-i) ; end; else begin end end; end;end;end.
模板写个C#版本加密类:
- <pre class="csharp" name="code">using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Utility
- {
- public class DCENCode
- {
- public string EnUser(char[] s)
- {
- string fnil ="'(&.&!'%&$\"'&)\" \",&)$(%#$-$#$$\" ";
- string FF1 = " !\"#$%&'()*+,-./";
- int n, i, d;
- string Result;
- i = s.Length;
- Result = fnil.Substring((i - 1) * 2, 30 - (i - 1) * 2);
- for (n = i - 1; n >= 0; n--)
- {
- i = (Convert.ToInt32(s[n]) - 32) % 16;
- d = ((Convert.ToInt32(s[n]) - 32) / 16) + 1;
- Result = Result + Convert.ToChar(32 + d + 1) + FF1[i];
- }
- return Result;
- }
- unsafe public string Encode7(string EnStr,char[] s)
- {
- int i, n1, n2;
- char FStr1, FStr2, FStr3, Fchar1;
- string Result = EnStr;
- for (i = 0; i < s.Length; i++)
- {
- if (i <= 3)
- {
- FStr1 = s[i];
- FStr2 = Result[i];
- FStr3 = Result[28 + i];
- n1 = ((Convert.ToInt32(s[i]) - 32) % 8);
- n2 = ((Convert.ToInt32(s[i]) - 32) / 16);
- Fchar1 = Convert.ToChar(n2 * 16 + 32);
- n2 = Convert.ToInt32(FStr2) ^ Convert.ToInt32(FStr1);
- n2 = (n2 & 0x0F) + 0x20;
- FStr2 = Convert.ToChar(n2);
- FStr3 = Convert.ToChar(Convert.ToInt32(Fchar1) + ((Convert.ToInt32(FStr3) + Convert.ToInt32(Fchar1)) % 16));
- Result = Result.Substring(0, i) + FStr2 + Result.Substring(i + 1, 31 - i);
- Result = Result.Substring(0, 28 + i) + FStr3 + Result.Substring(29 + i, 3 - i);
- }
- else
- {
- FStr1 = s[i];
- FStr2 = Result[i];
- FStr3 = Result[i - 4];
- n1 = ((Convert.ToInt32(s[i]) - 32) % 16);
- n2 = ((Convert.ToInt32(s[i]) - 32) / 16);
- Fchar1 = Convert.ToChar(n2 * 16 + 32);
- n2 = Convert.ToInt32(FStr2) ^ Convert.ToInt32(FStr1);
- n2 = (n2 & 0x0F) + 0x20;
- FStr2 = Convert.ToChar(n2);
- FStr3 = Convert.ToChar(Convert.ToInt32(Fchar1) + ((Convert.ToInt32(FStr3) + Convert.ToInt32(Fchar1)) % 16));
- Result = Result.Substring(0, i) + FStr2 + Result.Substring(i + 1, 31 - i);
- Result = Result.Substring(0, i - 4) + FStr3 + Result.Substring(i - 3, 35 - i);
- }
- }
- return Result;
- }
- }
- }
- </pre><br>
- 易飞登录密码
- 登录密码
- linux 密钥登录密码登录
- WINDOWS登录密码破解
- 清除Win2000登录密码
- 破解windows 登录密码!!!
- 不用密码登录xp
- 忘记登录密码
- 破解windows 登录密码
- ssh无密码登录
- 新型万能登录密码
- 忘记oracle登录密码
- 登录时记录密码
- 忘记计算机登录密码
- windowsXP 忘记登录密码
- SSH免密码登录
- SSH 无密码登录
- 修改帐号登录密码
- Laravel+Angularjs+D3打造可视化数据,RESTful+Ajax
- Java异常使用一个不错的整理
- Croc Champ 2013 - Round 2 (Div. 2 Edition)-C Weird Gam
- Start
- 权限设计及算法(PHPE)
- 易飞登录密码
- 一步一步学android控件(之八) —— ImageView
- 基于JSON的高级AJAX开发技术
- ORACLE单行函数与多行函数之六:通用函数示例
- Ajax:拥抱JSON,让XML走开
- dilworth定理{偏序集}{百度百科}
- vbox中设置Ubuntu与主机文件共享的方法
- 五种常见的PHP设计模式
- session和cookie的学习总结