profile image

L o a d i n g . . .

리액트에서 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문으로 감싸주었다.

 

 

하얀화면이 아닌 화면은 그대로 나오고, 에러는 로그로 출력!

반응형
복사했습니다!