리액트에서 cryptojs 사용중 Malformed UTF-8 data 오류가 발생했다.
나의 경우엔 백엔드와 공유한 키를 잘못 입력했을 경우 발생했다.
const decAES256 = (data) => {
const key = '키' // key 32 바이트
const iv = '' // iv 16 바이트(생략가능)
console.log(data)
try {
const decrypt = CryptoJS.AES.decrypt(data, CryptoJS.enc.Utf8.parse(key), {
iv: CryptoJS.enc.Utf8.parse(iv),
padding: CryptoJS.pad.Pkcs7,
mode: CryptoJS.mode.CBC, // cbc 모드
}).toString(CryptoJS.enc.Utf8)
return decrypt ? decrypt : ''
} catch (error) {
log.info(`[[decAES256 ${error}]]`)
}
}
decrypt 중 발생하는 문제였기 때문에 해당 메서드를 try-catch문으로 감싸주었다.
하얀화면이 아닌 화면은 그대로 나오고, 에러는 로그로 출력!
반응형