델마당의 박후선님이 만드신 암호화-복호화 소스. (무려 게시일이 1998년 4월 20일)
백업 차원에서 들여쓰기 등만 약간 수정 후 게시함.
실제로 사용하는 함수는 Encrypt, Decrypt 2개.
const
HexaChar: array [0..15] of Char=('0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F');
// Byte로 구성된 데이터를 Hexadecimal 문자열로 변환
// _____________________________________________________________________________
function ValueToHex(const S: String): String;
var i: Integer;
begin
SetLength(Result, Length(S)*2); // 문자열 크기를 설정
for i:=0 to Length(S)-1 do begin
Result[(i*2)+1]:=HexaChar[Integer(S[i+1]) shr 4];
Result[(i*2)+2]:=HexaChar[Integer(S[i+1]) and $0f];
end;
end;
// Hexadecimal로 구성된 문자열을 Byte 데이터로 변환
// _____________________________________________________________________________
function HexToValue(const S: String) : String;
var i: Integer;
begin
SetLength(Result, Length(S) div 2);
for i:=0 to (Length(S) div 2)-1 do begin
Result[i+1] := Char(StrToInt('$'+Copy(S,(i*2)+1, 2)));
end;
end;
// 암호걸기
// _____________________________________________________________________________
function Encrypt(const S: String; Key1, Key2, Key3: WORD): String;
var
i: Byte;
FirstResult: String;
begin
SetLength(FirstResult, Length(S));
for i:=1 to Length(S) do begin
FirstResult[i]:=Char(Byte(S[i]) xor (Key1 shr 8));
Key1 :=(Byte(FirstResult[i])+Key1)*Key2+Key3;
end;
Result:=ValueToHex(FirstResult);
end;
// 암호풀기
// _____________________________________________________________________________
function Decrypt(const S: String; Key1, Key2, Key3: WORD): String;
var
i: Byte;
FirstResult: String;
begin
FirstResult:=HexToValue(S);
SetLength(Result, Length(FirstResult));
for i:=1 to Length(FirstResult) do begin
Result[i]:=Char(Byte(FirstResult[i]) xor (Key1 shr 8));
Key1 :=(Byte(FirstResult[i])+Key1)*Key2+Key3;
end;
end;
HexaChar: array [0..15] of Char=('0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F');
// Byte로 구성된 데이터를 Hexadecimal 문자열로 변환
// _____________________________________________________________________________
function ValueToHex(const S: String): String;
var i: Integer;
begin
SetLength(Result, Length(S)*2); // 문자열 크기를 설정
for i:=0 to Length(S)-1 do begin
Result[(i*2)+1]:=HexaChar[Integer(S[i+1]) shr 4];
Result[(i*2)+2]:=HexaChar[Integer(S[i+1]) and $0f];
end;
end;
// Hexadecimal로 구성된 문자열을 Byte 데이터로 변환
// _____________________________________________________________________________
function HexToValue(const S: String) : String;
var i: Integer;
begin
SetLength(Result, Length(S) div 2);
for i:=0 to (Length(S) div 2)-1 do begin
Result[i+1] := Char(StrToInt('$'+Copy(S,(i*2)+1, 2)));
end;
end;
// 암호걸기
// _____________________________________________________________________________
function Encrypt(const S: String; Key1, Key2, Key3: WORD): String;
var
i: Byte;
FirstResult: String;
begin
SetLength(FirstResult, Length(S));
for i:=1 to Length(S) do begin
FirstResult[i]:=Char(Byte(S[i]) xor (Key1 shr 8));
Key1 :=(Byte(FirstResult[i])+Key1)*Key2+Key3;
end;
Result:=ValueToHex(FirstResult);
end;
// 암호풀기
// _____________________________________________________________________________
function Decrypt(const S: String; Key1, Key2, Key3: WORD): String;
var
i: Byte;
FirstResult: String;
begin
FirstResult:=HexToValue(S);
SetLength(Result, Length(FirstResult));
for i:=1 to Length(FirstResult) do begin
Result[i]:=Char(Byte(FirstResult[i]) xor (Key1 shr 8));
Key1 :=(Byte(FirstResult[i])+Key1)*Key2+Key3;
end;
end;
'Delphi' 카테고리의 다른 글
[Delphi] 실행파일이 자기자신을 지우기 (0) | 2010.07.07 |
---|---|
[Delphi] 디렉토리 삭제,복사,이동,이름바꾸기 (ShFileOperation, TShFileOpStruct) (0) | 2010.07.07 |
[Delphi] IPC - FileMapping [CreateFileMapping, OpenFileMapping, MapViewOfFile] (0) | 2010.07.02 |
[Delphi] 에디트박스 문자열 가져오기 (EM_GETLINE) (0) | 2010.07.01 |
[Delphi] 크기별 아이콘 설정하기 (ico) (0) | 2010.06.30 |