如何解决CryptoJS AES 加密参数解密失败
在 React 应用程序中,我试图从某个 API 获取一些内容,使用 CryptoJS 对对象进行编码,然后重定向到另一个页面,将哈希添加为参数。 在登录页面上,我遇到了 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse 这是我加密 API 响应的页面:
import { useEffect } from 'react';
import { useHistory,useParams } from 'react-router-dom';
import CryptoJS from 'crypto-js';
import codeAPI from '../../services/promo-code.api'
const PromoNew = () => {
const history = useHistory();
const params = useParams();
useEffect(() => {
async function fetchData() {
const response = await codeAPI.get('code');
const toEncrypt = {
code : response.data[0].code,// string
date : response.data[0].expiration_date,// string
limit : response.data[0].usage_limit,// number
}
const encrypted = encodeURIComponent(CryptoJS.AES.encrypt(
JSON.stringify(toEncrypt),process.env.REACT_APP_CODE_SECRET
).toString());
history.push(`promo/${encrypted}`);
}
fetchData();
},[history,params.code]);
return (
// some foo
)
}
export default PromoNew;
以及我接收加密哈希作为参数的页面:
import React,{ useEffect,useState } from 'react';
import { useParams } from 'react-router-dom';
import CryptoJS from 'crypto-js';
const Promo = () => {
const params = useParams();
const [code,setCode] = useState(null);
const [expirationDate,setExpirationDate] = useState(null);
useEffect(() => {
const bytes = CryptoJS.AES.decrypt(
params.hash,process.env.REACT_APP_CODE_SECRET
);
const decrypted = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
if(!decrypted) {
setCode('não disponível')
} else {
setCode(decrypted);
setExpirationDate(decrypted.exp);
}
},[params.hash]);
return (
// some bar
)
}
export default Promo;
quote 帮帮我欧比旺克诺比,你是我唯一的希望。 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。