mariadb UPDATE에서 AES_ENCRYPT 사용시 incorrect string value 에러 발생이 납니다 ㅠㅠ 0 4 3,226

by 열정가이 [2018.08.14 02:56:46]


캡처.JPG (26,598Bytes)

create table test(
test varchar(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

를 통해 TABLE을 생성 후 '한글' 이라는 text를 입력 후 입력된 값을 AES_ENCRYPT를 사용하여 암호화 하려고 합니다

update test T1 set T1.test = AES_ENCRYPT(
(select test from (select test from test) tmp
 where tmp.test = T1.test
),SHA2("enc_key",512));

쿼리는 위와 같습니다. 

그러나

ERROR 1366 (22007): Incorrect string value: '\xC3\xDD\xE2\x97\xD3\xD2...' 와 같은 에러가 발생합니다 ㅠㅠ

Character_set은 아래 사진과 같습니다!! latin1을 utf8으로 변경 후에 시도해봐도 에러가 발생하네요 ㅠ 왜그러는걸까요 ㅠㅠ

 

by 우리집아찌 [2018.08.14 08:44:28]

CHARACTER SET 전부 UTF8로 바꿔야하지 않나요?


by 열정가이 [2018.08.14 15:13:15]

CHARACTER SET 전부 UTF8 으로 해도 에러가 발생하더라구요 ㅠㅠ

column type이 varchar나 text일 경우 종종 저렇게 에러가 난다고 하네요 ㅠ 그 이유가 암호화 함수를 사용할 경우 임의의 Byte 값을 반환하는 암호화 함수들이 있어서 BLOB 타입을 사용해야 한다고 합니다!! 


by 우리집아찌 [2018.08.14 15:19:15]

아.. 그런가요?

이번에 마리아DB 사용하는데 암호화는 아직 적용못해봐서 테스트 못해봤는데 참고해야겠네요.


by 잠만보 [2018.08.14 16:42:11]

더 테스트 해 봐야 겠지만 이런 방법도 있나 보네요.

https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html

 

select HEX(AES_ENCRYPT('한글_쎅횾칅븦걒_ABC_abc_ハングルの_韩文', SHA2("enc_key",512))) ENCRYPT

;

select cast(AES_DECRYPT(UNHEX('9CF2990C43526B735B2ECAB7A3DFBF6067EF65F7EFE96E80F44FCB7D172CDE2FB7381FEA59CC0F378EBF603778DE767637ED6B7C8FB1E1749B7EF6363A43FB61'), SHA2("enc_key",512)) AS CHAR(4000) CHARACTER SET UTF8) DECRYPT

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입