본문 바로가기

JAVASCRIPT

[Javascript] CrytptoJS 암호화 시 TypeError: Converting circular structure to JSON 나는 문제 해결

 

 

 cryptoJS 는 Object 형태를 저장할 수 없고, String 형태만 가능하기 때문에 JSON 의 경우 JSON.stringify 를 사용하여 String 형태로 직렬화 후 사용가능합니다.

[toString 을 사용하지 않은 경우]

  • cryptoJS 라이브러리를 사용하여 객체를 String 으로 직렬화하여 암호화 후 역직렬화하여 데이터에 저장 시 다음과 같은 오류가 발생합니다.

 

  • 이와 같은 에러는 주로 직렬화나 역직렬화 시 내부에 타입이 맞지 않는 문제로 순환 참조 시 발생합니다.

  • CryptoJS - npm

 

 

해결방안

  • CryptoJS.AES.encode(JSON.stringify(data), key) 로 데이터를 암호화 진행하면 console.log 에는 문제없이 출력되지만 저장 시 오류가 발생하는데, 마지막에 .toString() 을 추가해주면 문제 없이 저장됩니다.

  • toString() 을 제외하면 Object 형태로 type 이 선언되는데 이를 toString() 의 함수로 String 으로 타입을 변환해줘야 합니다.

[초기화된 데이터]
[toString 을 사용하여 암호화 진행]