SSL용 DES 암호화 함수

문자열을 트리플-DES  알고리즘을 이용해 주어진 키로 암호화하는 함수입니다. 이 함수는 mysql SSL 사용이 설정되어 있는 경우에만 동작합니다. 첫번째 인자는 암호화할 문자열를, 두번째는 암호화 키로 선택됩니다. 그리고 key 는 숫자이거나 문자가 올 수 있으며, 에러가 발생하면, NULL를 반환합니다.

 # 암호화할 때 사용
 SELECT DES_ENCRYPT(str, key); 

 # 복호화할때 사용
 SELECT DES_DECRYPT(str, key);

예제(ex #1
 # 암호화
 mysql> SELECT DES_ENCRYPT('card_number', '123456789');

 # 복호화
 mysql> SELECT DES_DECRYPT(암호화 값, '123456789');
 
ENCRYPT 암호화 함수

유닉스 crypt() 시스템을 사용하는 encrypt 함수는 바이너리 문자열을 반환하고, salt 인자는 적어도 두글자를 갖는 문자열이어야 합니다. salt 인자가 주어지지 않으면, 랜덤값이 주어집니다.

 SELECT ENCRYPT(str, [,salt]);

예제(ex #2
 mysql> SELECT ENCRYPT('hello');
      > VxuFAJXVARR0c
 
ENCODE, DECODE 암호화 함수

encode 함수는 key 가 주어진 str를 암호화하며, 복호화는 decode를 사용합니다.

 # 암호화
 SELECT ENCODE(str, key);

 # 복호화
 SELECT DECODE(str, key);

예제(ex #3
 mysql> SELECT ENCODE('TEST', '123456789');
      > 험$i
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag 암호화

댓글을 달아 주세요

이 함수는 일반 문자열을 str 를 암호화한 바이너리 문자열을 반환합니다. str 이 NULL 이면 NULL 를 반환합니다.

 SELECT PASSWORD(str);

예제(ex #1
 mysql> SELECT PASSWORD('test');
      -> *47A6B0EA08A36FAEBE4305B373FE37E3CF27C357

 관련글: 2011/09/30 - 브루트 포스 공격 (brute force attack)
            2011/09/30 - [mysql] MD5, SHA1 단방향 암호화 함수
            2011/09/14 - [mysql] 데이터의 암호화, 복호화하는 AES 함수
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag 암호화

댓글을 달아 주세요

mysql 에 단방향 암호화함수가 있는데, md5, sha1 함수가 그 것입니다. 이 함수는 php 함수와 동일한 기능으로 작동하는데, md5 는 128비트 체크섬을 계산하여 32헥사 자리 바이너리 문자열을 반환하고, sha1 함수는 RFC 3174로 묘사된 문자에 대한 160 비트 체크섬을 계산하여 40 헥사 자리 바이너리 문자열을 반환합니다.

 SELECT MD5(str);
 SELECT SHA1(str);

예제(ex #1
 mysql> SELECT MD5('test');
      -> 098f6bcd4621d373cade4e832627b4f6

 mysql> SELECT SHA1('test');
      -> a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

 // SHA 함수는 SHA1 함수의 동의어입니다.
 mysql> SELECT SHA('test');
      -> a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

예제(ex #2
 mysql> SELECT SHA1(MD5('test'));
      -> 4028a0e356acc947fcd2bfbf00cef11e128d484a

관련글: 2011/09/30 - 브루트 포스 공격 (brute force attack)
           2011/09/30 - [mysql] PASSWORD 함수
           2011/09/14 - [mysql] 데이터의 암호화, 복호화하는 AES 함수
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag 암호화

댓글을 달아 주세요

mysql 에는 데이터를 암호화, 복호화하는 AES_ENCRYPT, AES_DECRYPT 함수가 있습니다. 이 암호화는 128비트 길이로 인코딩되어 저장됩니다. 그러나 소스를 수정해서 256비트까지 확장시킬수 있다고 합니다.

AES_ENCRYPT 는 문자열을 암호화하고, 바이너리 문자열을 반환하지만, AES_DECRYPT 는 암호화된 문자열을 복호화합니다. AES_DECRYPT 는 유효하지 않은 데이터는 padding을 감지하고, NULL을 반환합니다.

 # "암호화 키"는 임의의 값이 올 수 있으며, "문자열"은 암호화하고자 하는 값이 됩니다.

 # AES_ENCRYPT 암호화
  INSERT INTO 테이블명 VALUES (HEX(AES_ENCRYPT('문자열', '암호화 키')));
 
 # AES_DECRYPT 복호화
  SELECT AES_DECRYPT(UNHEX(필드명), '암호화 키') FROM 테이블명;

예제 (ex #1
 # AES_ENCRYPT 암호화
 INSERT INTO tbname VALUE (HEX(AES_ENCRYPT('123456','가나다라')));
 // 결과: 5A33E11DC0B638E4E5E74EBD52F55E3D

 # AES_DECRYPT 복호화
 SELECT AES_DECRYPT(UNHEX(필드명), '가나다라') FROM tbname;

 관련글: 2011/09/30 - 브루트 포스 공격 (brute force attack)
            2011/09/30 - [mysql] MD5, SHA1 단방향 암호화 함수
            2011/09/30 - [mysql] PASSWORD 함수
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag 암호화

댓글을 달아 주세요