천객만래 [千客萬來] (It has an interminable succession of visitors)
공유기 무선 암호화 방식/무선 모드 설정으로 속도 업!



유선은 IPTV나 인터넷전화 외에 무선은 스마트폰, 태블릿, 노트북 등등 대부분 사용해야하는 환경에 지내게 되었습니다.

사용자가 많은 시간대 영향도 크지만 날씨의 영향도 있는지 바 많이 오고 그러면 더 반응이 느린것 같고..

여튼 무선이 너무 느려서 혹시나 하고 무선 암호화 방식이 WPA/WPA2-PSK 이던걸 WPA2-PSK 단독 모드로 바꾸었더니 1.5MB/s이던 속도가 30MB/s 까지 올라갔어요.

역시나하면서 무선 모드를 B+G+N 이던걸 G+N으로 바꾸니 지금은 50MB/s 쭉 유지 중.

이게 무선 설정이 바뀌어 그런건지, 설정 바꾸면서 공유기가 refresh 되어 그런건지는 모르지만 너무 큰 차이가 나네요

암호화 방식 때문인거 맞음.


Posted by SB패밀리







PlanMate PMIS 비밀번호와 Mac Address 암호화







Posted by SB패밀리






소백촌닭 : 델파이에서 암호화 DLL 생성
델파이/씨빌더에서 암호화 DLL 사용 예제

DLL 작성 : 델파이 5 버전




Posted by SB패밀리

스크립트 암호화 프로그램 입니다.


aspx 소스입니다..





스크립트암호화.zip


Posted by SB패밀리





Borland Delphi 5로 개발된 암호화 DLL

문자열을 암호화 하고 해독하는 함수

Readme.txt : 지금 보고 있는 텍스트 파일
cccipher.dll : 암호화/해독 함수가 포함된 DLL

[델파이에서 선언]
Function Encrypt(Src: PChar; Key: Word): PChar; stdcall; External 'CCCIPHER.DLL';
Function Decrypt(Src: PChar; Key: Word): PChar; stdcall; External 'CCCIPHER.DLL';

[델파이에서 사용]
// encipher
Edit2.Text := StrPas(Encrypt(PChar(Edit1.Text), StrToInt(Edit5.Text)));
// decipher
Edit4.Text := StrPas( Decrypt( PChar(Edit3.Text), StrToInt(Edit5.Text) ) );

※ C++Builder 5 예제도 포함되어 있음.

Base64 인코딩/디코딩 된 결과물을 볼 수 있음.
사용에 버그가 있거나 문의사항이 있을 경우에 연락을 주시면 감사하겠습니다. 
homepage: http://sb.pe.kr 

암호화DLL테스트.ZIP


좋은 목적을 위해서라면 아무나 쓰셔도 상관 없습니다.

- 쌈꼬쪼려 소백촌닭 -




Posted by SB패밀리

MD5 암호화를 찾아보면서...

MD5 암호화 리턴값이 다른 경우가 꽤나 있다. 그래서 windows에서 제공하는 WinAPI32 를 사용하기로 했다.

WinCrypt API를 사용하기로 했다.

그리고, 값이 제대로 나오는 방법을 찾아서 구현했다.


또, 아래 사이트가 내가 구현한 것과 거의 유사하다.


아래 소스가 공유가 많이 되었으면 좋겠다. 동일한 md5 암호화 값이 나오게




[개발/Delphi] WinCrypt API32 로 문자열 MD5 암호화 하기



출처: http://www.scalabium.com/faq/dct0173.htm


function MD5(const Value: string): string;
var
  hCryptProvider: HCRYPTPROV;
  hHash: HCRYPTHASH;
  bHash: array[0..$7F] of Byte;
  dwHashLen: dWord;
  i: Integer;
begin
  dwHashLen := 16;
  if (Value = '') then
  begin
    Result := 'd41d8cd98f00b204e9800998ecf8427e';
    exit;
  end
  else
    Result := '';

  {get context for crypt default provider}
  if CryptAcquireContext(@hCryptProvider, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT or CRYPT_MACHINE_KEYSET) then
  begin
    {create hash-object MD5}
    if CryptCreateHash(hCryptProvider, CALG_MD5, 0, 0, @hHash) then
    begin
      {get hash from password}
      if CryptHashData(hHash, @Value[1], Length(Value), 0) then
      begin
        if CryptGetHashParam(hHash, HP_HASHVAL, @bHash[0], @dwHashLen, 0) then
        begin
          for i := 0 to dwHashLen-1 do
            Result := Result + IntToHex(bHash[i], 2);
        end;
      end;
      {destroy hash-object}
      CryptDestroyHash(hHash);
    end;
    {release the context for crypt default provider}
    CryptReleaseContext(hCryptProvider, 0);
  end;

  Result := AnsiLowerCase(Result);
end;

Posted by SB패밀리
[mfc] WINDOWS API를 이용한 암호화 간단 예제

#include "stdafx.h"
#include <Windows.h>
#include <WinCrypt.h>

#define    MY_PASS       "papaya"           // 패스워드
#define    KeyLen        0x0080 * 0x10000    // 128-bit

int _tmain(int argc, _TCHAR* argv[])
{

    HCRYPTPROV    hProv;
    HCRYPTHASH    hHash;
    HCRYPTKEY     hKey;

    BYTE          pbData[100] = "TEST TEST TEST REAL TEST";
    DWORD         dwDataLen = (DWORD)strlen((char*)pbData) + 1;

    // CSP(Crystographic Service Provider) 핸들 얻기

    if(!CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, 
                            PROV_RSA_FULL, 0))
    {
        // 유저용 키 컨테이너 만들기
        if(!CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV,
                                PROV_RSA_FULL, CRYPT_NEWKEYSET))
        {
            printf("유저용 키 켄테이너 만들기 에러\n");
            return 1;
        }
    }

    // 해쉬 만들기
    if(!CryptCreateHash(hProv, CALG_SHA, 0, 0, &hHash))
    {
        printf("해쉬 만들기 에러\n");
        return 2;
    }

    // 해쉬 값 계산
    if(!CryptHashData(hHash, (BYTE*)MY_PASS, (DWORD)strlen(MY_PASS), 0))
    {
        printf("해쉬 값 계산 에러\n");
        return 3;
    }

    // 키 만들기
    if(!CryptDeriveKey(hProv, CALG_RC4, hHash, KeyLen, &hKey))
    {
        printf("키 만들기 에러\n");
        return 4;
    }

    // 암호화
    if(!CryptEncrypt(hKey, 0, TRUE, 0, pbData, &dwDataLen, 100))
    {
        printf("암호화 에러\n");
        return 5;
    }
    printf("암호건 문자 -> %s\n", pbData);

    // 복호화
    if(!CryptDecrypt(hKey, 0, TRUE, 0, pbData, &dwDataLen))
    {
        printf("복호화 에러\n");
        return 6;
    }
    printf("암호푼 문자 -> %s\n", pbData);

    // 해쉬 없애기
    CryptDestroyHash(hHash);

    // CSP 핸들 풀어주기
    CryptReleaseContext(hProv, 0);

    return 0;
}


Posted by SB패밀리

protected string strOrig = "test your coding";
  protected string strResult = "";
  protected string reOrig = "";
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   //암호화

   byte[] byteOrig = new byte[strOrig.Length];
   for (int i = 0; i < strOrig.Length; i++)
   {
    byteOrig[i]= Convert.ToByte(Convert.ToChar(strOrig.Substring(i,1)));
   }
   this.strResult = Convert.ToBase64String(byteOrig);//결과

  //해독

   this.reOrig = System.Text.Encoding.Default.GetString(System.Convert.FromBase64String(strResult));

  }

Posted by SB패밀리