1. 程式人生 > >crypto-js解密報錯malformed utf-8 data

crypto-js解密報錯malformed utf-8 data

在使用crypto-js進行解密的時候,有可能會報錯:

Malformed UTF-8 data
Error: Malformed UTF-8 data
    at Object.stringify (d:\StudeyCode\myStudy\encryptDemo\routes\encrypt\crypto-js.js:478:27)
    at WordArray.init.toString (d:\StudeyCode\myStudy\encryptDemo\routes\encrypt\crypto-js.js:215:41)
    at decryptByDESModeCBC (d:\StudeyCode
\myStudy\encryptDemo\routes\encrypt\crypto.js:90:22) at testSign (d:\StudeyCode\myStudy\encryptDemo\routes\test.js:34:18) at Layer.handle [as handle_request] (d:\StudeyCode\myStudy\encryptDemo\node_modules\express\lib\router\layer.js:95:5) at next (d:\StudeyCode\myStudy\encryptDemo\node_modules\express
\lib\router\route.js:137:13) at Route.dispatch (d:\StudeyCode\myStudy\encryptDemo\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (d:\StudeyCode\myStudy\encryptDemo\node_modules\express\lib\router\layer.js:95:5) at d:\StudeyCode\myStudy\encryptDemo\node
_modules\express\lib\router\index.js:281:22 at Function.process_params (d:\StudeyCode\myStudy\encryptDemo\node_modules\express\lib\router\index.js:335:12)

報錯的原因是: des解密時,如果加密資料不是8的整數倍就會報上述錯誤,
解決辦法:將資料加密後,再進行base64進行加密,解密時首先通過base64進行解密,然後再進行des解密。即可解決上述問題。