데이터의 암호화, 복호화하는 AES 함수 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

데이터의 암호화, 복호화하는 AES 함수 정보

데이터의 암호화, 복호화하는 AES 함수

본문

[mysql] 데이터의 암호화, 복호화하는 AES 함수

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;

암호화키는 상수로 정의해놓거나 해서 데이터 베이스의 정보가 노출되더라도 키가 없이는 열수 내용을 알수가 없습니다.

요세 주민번호는 잘 안받겠지만 개인정보인 연락처, 이메일 , 주민번호를 암호하 한다면 좋습니다.
추천
4

댓글 7개

스킨에 특정필드의데이터가 varchar 형식이라면 가능합니다
skin write head 부분에서 암호화 처리후
view단에서는 복호화해서 보여주면 댑니다 디비에는 암호화 데이터가 들어가있구요
답변 감사 드립니다.
쿼리문을 다시 만들어서 넣어줘야 한다는거네요?
혹시 회원db를 기준으로 말씀 하시는것 이신지요?
저는 일반 게시판을 기준으로 질문 드렸습니다만...


INSERT 트 또는 update 할때는
set  wr_subject = HEX(AES_ENCRYPT('$wr_subject','key'))
이런식으로 한번의 쿼리문으로 하면 된다지만

보기에서 select * 도 한번 하고 (기본)
복호화 해주기위한 필드를 지정한 쿼리문을 별도로 수행해야 되나요?
즉 두번 쿼리 한다는것이 조금 걸려서요

그냥 php 에서 똑같은 복호가 가능하다면 좋을텐데요

질문이 잘 전달 될런지 걱정이네요.
어째든 감사 드립니다.

추가 질문도 있어요 ㅎㅎ
이미 암호화된 데이타를 복호키를 분실 했을경우 영원히 복구 불가 하겠네요.
대책은 없지요?
디비로 한번에 불러올때 사용 할수도 있지만 php 에서도 사용 가능합니다
http://kr.php.net/manual/en/function.mcrypt-encrypt.php
이쪽이랑 같이 참조해서 보시면 될듯합니다.
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT