Q&A

  • <<암호화/복호화>>
어제 질문을 올렸었는데 제가 원하는 답변이 되질않아서 이렇게 다시 올립니다.



스플레쉬 폼 다음에 사용자이름, 암호를 입력해서 로그인하는 폼을 만들려고 하는데요



암호랑 사용자이름 그냥 저장하면 볼 수도 있잖아요..그래서 암호화/복호화 한다는데



구체적으로 어떻게해야 하는지...?? 그리고 사용자가 암호를 변경할 수도 있잖아요..



이런 전반적인 방법을 구체적으로 알고싶은데요...



첨에 사용자가 이름이랑 암호를 어떻게 넣게해야하는지..??



도저히 감이 오질않아서....좀 자세하게 부탁드립니다..



즐거운 주말되시구요...그럼 20000

2  COMMENTS
  • Profile
    강인규 2000.04.22 23:43
    다중 사용자 환경이라면 디비를 이용하는것이 바람직하고 단일사용자 환경이라면 ini화일을 이용할 수도 있습니다. 김영대님의 홈페이지에 가시면 암호화/복호화 하는 함수를 구하실 수 있을것 입니다. 레지스트리를 이용하는 방법인데 알고리즘은 거의 공개된 것이나 다름없어 보안상 신뢰성은 없고 만일 확실한 보안을 요하는 작업이라면 자료실에 암호화 컴퍼넌트가 있으니 받아서 소스를 분석하시면 좋은 성과 있으실 겁니다.

    좋은 성과 있으시길 빕니다. 아래는 영대님의 팁을 이용해 디비를 이용한 암호 알고리즘입니다. 참고하십시요.



    암호 확인시......



    table1.IndexFieldNames :='name';

    table1.setkey;

    if table1.FindKey([edit1.text])= false then begin

    showmessage('이름이 존재하지 않습니다.');

    exit;

    end;



    pass := Decrypt(table1password.value, MY_KEY);

    if pass = edit2.Text then

    form2.ShowModal;



    암호 입력시...........

    Table1Password.Value := Encrypt(edit2.Text, MY_KEY);

    Table1.Post;



    //암호화 알고리즘

    function TForm1.Decrypt(const S: String; Key: Word): String;

    var

    i: byte;

    sDecrypt, rDecrypt, temp: String;

    begin

    rDecrypt := '';

    if S = '' then

    begin

    Decrypt := '';

    System.Exit;

    end;



    i := 1;

    repeat

    temp := Copy(S, i, 3); // 한문자당 3자리 숫자로 저장되어 있다

    rDecrypt := rDecrypt + Chr(StrToIntDef(temp, 0)); // ASCII값을 구한다

    i := i + 3;

    until i > Length(S);



    sDecrypt := '';

    for i := 1 to Length(rDecrypt) do

    begin

    sDecrypt := sDecrypt + char(byte(rDecrypt[i]) xor (Key shr 8));

    Key := (byte(rDecrypt[i]) + Key) * C1 + C2;

    end;

    Result := sDecrypt;

    end;



    //복호화 알고리즘

    function TForm3.Encrypt(const S: String; Key: Word): String;

    var

    i: byte;

    sEncrypt, rEncrypt: String;

    rChar: Char;

    begin

    sEncrypt := ''; // 암호화된 이진 문자열

    if S = '' then begin

    Encrypt := '';

    System.Exit;

    end;

    for i := 1 to Length(S) do begin

    sEncrypt := sEncrypt + char(byte(S[i]) xor (Key shr 8));

    Key := (byte(sEncrypt[i]) + Key) * C1 + C2;

    end;



    rEncrypt := ''; // 암호화된 이진 문자열을 ASCII 숫자로 변경

    for i := 1 to Length(sEncrypt) do begin

    rChar := sEncrypt[i];

    rEncrypt := rEncrypt + format('%.3d', [Ord(rChar)]); // 한문자당 3자리씩

    end;

    Result := rEncrypt;

    end;





    세개의 상수를 사용하는데 이것은 전역으로 선언해 주어야 합니다.

    const

    C1 = 52845; // 기준키1

    C2 = 28317; // 기준키2

    MY_KEY = 12345; // 사용자키는 필히 변경하십시요.



    P.S. 요즘들어 같은 질문이 주기적으로 쏟아지는 경우가 종종 있습니다. 가급적 검색을 활용하시고 처음부터 다해달라 식의 질문은 삼가주시길 바랍니다. 뭐 저야 시간도 남고 고수도 아니니 글을 올리는게 쉽지만 고수님들은 그렇지 못하답니다. ^^;







    궁금녀 wrote:

    > 어제 질문을 올렸었는데 제가 원하는 답변이 되질않아서 이렇게 다시 올립니다.

    >

    > 스플레쉬 폼 다음에 사용자이름, 암호를 입력해서 로그인하는 폼을 만들려고 하는데요

    >

    > 암호랑 사용자이름 그냥 저장하면 볼 수도 있잖아요..그래서 암호화/복호화 한다는데

    >

    > 구체적으로 어떻게해야 하는지...?? 그리고 사용자가 암호를 변경할 수도 있잖아요..

    >

    > 이런 전반적인 방법을 구체적으로 알고싶은데요...

    >

    > 첨에 사용자가 이름이랑 암호를 어떻게 넣게해야하는지..??

    >

    > 도저히 감이 오질않아서....좀 자세하게 부탁드립니다..

    >

    > 즐거운 주말되시구요...그럼 20000

  • Profile
    윤티 2000.04.23 09:30
    델코의 자료실에 가면 있을걸요.

    패스워드창이라고 ....

    http://www.delphikorea.com

    • Mr.Q
      2000.04.23 12:09
      현명한용이 wrote: > 레포트로 계산기 프로그램에서 라디오 버튼을 누르면 2진수 8진수 16진수로 변환하는...
    • 초보자
    • 2000.04.23 07:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.04.23 07:38
      초보자 wrote: > combo box에 item이 10개가 있다고 가정해서요. > > 폼 초기화해서 10개의 item을 add...
    • 최용일
      2000.04.23 07:38
      ComboBox1.ItemIndex := 9; 초보자 wrote: > combo box에 item이 10개가 있다고 가정해서요. > > 폼...
    • 이정민
    • 2000.04.23 05:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.23 06:19
      안녕하세요. 최용일입니다. 또 보게 되는군요. 아!! 이름을 잊어버렸네요. 헐헐~~~ 아래 유닛의 에러...
    • nubigo
    • 2000.04.23 01:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 윤석천
      2000.04.26 01:20
      nubigo wrote: > string은 sql 문에 > sql.add('select * from "test.db" where name='''+up+''''); > ...
    • 정성훈
      2000.04.23 08:33
      nubigo wrote: > 고수님들 안녕하십니까? > 도움은 못 주고 항상 도움만 받아 미안합니다. > > 미안한...
    • 델Man
    • 2000.04.22 23:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 유니
    • 2000.04.22 22:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • seagod
      2000.04.23 00:40
      델파이 3.0, 4.0사용자를 위한 퀵리포트버젼이 있는걸로 아는데요 요걸 설치를하면 3.0 4.0에서 델파이 2....
    • 유니
      2000.04.24 19:01
      그런가여? 그럼 델파이4.0중에서 퀵레포트용을 구해야 한다는 말씀이신가여? 그럼 혹 그걸 어떻게 구해야...
    • 유니
      2000.04.24 19:01
      그런가여? 그럼 델파이4.0중에서 퀵레포트용을 구해야 한다는 말씀이신가여? 그럼 혹 그걸 어떻게 구해야...
    • kciron
    • 2000.04.22 21:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 윤병익
      2000.04.22 21:56
      kciron wrote: > 안녕하십니까? > > 델파이를 이용하여 출력 프로그램을 만들었는데. 최근에 나온 > ...
    • kciron
      2000.04.22 22:04
      윤병익 wrote: > kciron wrote: > > 안녕하십니까? > > > > 델파이를 이용하여 출력 프로그램을 만들...
    • DelChobo
      2000.04.22 22:21
      초보 델파이...백 wrote: > 한글을 유니코드로 바꾸려면 어찌해야 되나요? > > 별 함수도 없는것 같고,...
    • parkisu
      2000.04.23 00:42
      써니 wrote: > 안녕하세요. 델파이 QuickReport에 관해서 너무 급한게 있어서요. > 데이타를 입력하여 DB...
    • 써니
      2000.04.23 08:26
      답변은 감사드립니다. QRDBText를 이용한다는것은 알고 있습니다. 제가 궁금한것은 이 QuickReport하단에 ...
    • 하얀까마귀
      2000.04.22 20:28
      안녕하세요 하얀까마귀 입니다.. ... 문자열을 회전시키는건 안됩니다.... 이건 폰트의 문제니까.......
    • 최정원
      2000.04.22 21:31
      답변 감사합니다. 그런데, 답변하여주신 내용중에서 그래픽으로 처리해야 한다고 하셨는데 어떤식으로 처...
    • 최용일
      2000.04.23 07:55
      안녕하세요. 최용일입니다. 책을 찾아보시는 것이 더 나으실것 같은데요. 대학교재로 쓰이는 그래픽 프...
    • 궁금녀
    • 2000.04.22 19:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.04.22 23:43
      다중 사용자 환경이라면 디비를 이용하는것이 바람직하고 단일사용자 환경이라면 ini화일을 이용할 수도 있...
    • 윤티
      2000.04.23 09:30
      델코의 자료실에 가면 있을걸요. 패스워드창이라고 .... http://www.delphikorea.com
    • 초보1
    • 2000.04.22 19:00
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 윤병익
      2000.04.22 19:25
      초보1 wrote: > > 초보자가 글을 올립니다. > table의 주소필드(addr)는 40자리 입니다. > 화면상에...
    • 하얀까마귀
      2000.04.22 20:53
      안녕하세요 하얀까마귀 입니다... 말씀 처럼 1개의 필드의 내용을 20자리씩 나누어서 사용한다면... 델...
    • 초보1
      2000.04.22 20:34
      답변 감사합니다. 그러나 다른 방법을 혹시 아시는지요.. table은 DBF 파일이거든요.
    • 윤병익
      2000.04.22 21:17
      초보1 wrote: > 답변 감사합니다. > 그러나 다른 방법을 혹시 아시는지요.. > table은 DBF 파일이거든요...
    • 안경잡이
      2000.04.22 19:41
      SQL문장을 Parsing하시는게 어떤지요? (저같은경우엔 간이 SQL Parser를 제작하여 해결했습니다.)
    • 박용준
      2000.04.22 20:30
      직접 제작하신 SQL Parser의 소스를 볼 수 있을까요. 답변에 갑사드립니다. 행복하세요.