国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

前端crypto-js解密報(bào)malformed utf-8 data小結(jié)

codergarden / 6097人閱讀

摘要:一般情況下,很少會(huì)在前端進(jìn)行加解密的操作,因?yàn)闆](méi)有太大的必要性,前端的代碼是很容易看到的,即使這樣,我覺(jué)得還是有比較處理一下的,至少不讓別人一眼就看到信息我使用存儲(chǔ)了一些用戶(hù)的用戶(hù)名昵稱(chēng)等的信息,通過(guò)進(jìn)行加解密處理,這里我選用了加密算法對(duì)

一般情況下,很少會(huì)在前端進(jìn)行加解密的操作,因?yàn)闆](méi)有太大的必要性,前端的代碼是很容易看到的,即使這樣,我覺(jué)得還是有比較處理一下的,至少不讓別人一眼就看到信息

我使用localStorage存儲(chǔ)了一些用戶(hù)的用戶(hù)名昵稱(chēng)等的信息,通過(guò)crypto-js進(jìn)行加解密處理,這里我選用了AES加密算法對(duì)json對(duì)象數(shù)據(jù)進(jìn)行處理

按照官方的例子,如下

var CryptoJS = require("crypto-js");
 
var data = [{id: 1}, {id: 2}]
 
// Encrypt
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), "secret key 123");
 
// Decrypt
var bytes  = CryptoJS.AES.decrypt(ciphertext.toString(), "secret key 123");
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
 
console.log(decryptedData);

以上代碼在chrome里運(yùn)行沒(méi)什么問(wèn)題,可是在Safari的時(shí)候報(bào)了malformed utf-8 data

可能是前端加解密的場(chǎng)景比較少,搜到若干報(bào)這個(gè)錯(cuò)的,但是鮮有解決方法,其中有一個(gè)說(shuō)加密數(shù)據(jù)不是8的整數(shù)倍就會(huì)報(bào)上述錯(cuò)誤
解決方法:將數(shù)據(jù)加密后,再進(jìn)行base64進(jìn)行處理

  let newUserInfo = {nickname:"hello",email:"abc123@qq.com"};
  //加密數(shù)據(jù)
  let encJson = cryptoJS.AES.encrypt(JSON.stringify(newUserInfo), "aes").toString();
  //對(duì)加密數(shù)據(jù)進(jìn)行base64處理, 原理:就是先將字符串轉(zhuǎn)換為utf8字符數(shù)組,再轉(zhuǎn)換為base64數(shù)據(jù)
  let encData = cryptoJS.enc.Base64.stringify(cryptoJS.enc.Utf8.parse(encJson));
  localStorage.setItem("userInfo", encData);

  //將數(shù)據(jù)先base64還原,再轉(zhuǎn)為utf8數(shù)據(jù)
  let decData = cryptoJS.enc.Base64.parse(localStorage.getItem("userInfo")).toString(cryptoJS.enc.Utf8);
  //解密數(shù)據(jù)
  let decJson = cryptoJS.AES.decrypt(decData, "aes").toString(cryptoJS.enc.Utf8);
  userInfo = JSON.parse(decJson);
  
  console.log(userInfo);

以上,在safari,chrome,firefox運(yùn)行沒(méi)問(wèn)題

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/100464.html

相關(guān)文章

  • 使用crypto-js進(jìn)行128位AES/ECB/PKCS7Padding加密/解密

    摘要:支持多種加解密方案這里主要記錄一下使用進(jìn)行位的加解密前端加密是不安全的不安全的不安全的初始化一個(gè)文件直接全部回車(chē)就行啦安裝在同級(jí)目錄下新建一個(gè)文件寫(xiě)入以下內(nèi)容導(dǎo)入包定義加解密的都放這里了加密還有啥意義設(shè)置數(shù)據(jù)塊長(zhǎng)度生成密鑰字節(jié)數(shù) crypto-js支持多種加/解密方案, 這里主要記錄一下使用 crypto-js 進(jìn)行 AES 128位 的加/解密; 前端加密是不安全的, 不安全的, 不...

    jas0n 評(píng)論0 收藏0
  • 一套簡(jiǎn)單的基于 RSA + AES 加密機(jī)制的前端解決方案

    摘要:前言因公司現(xiàn)有后臺(tái)管理系統(tǒng)項(xiàng)目需對(duì)部分網(wǎng)絡(luò)請(qǐng)求接口的重要數(shù)據(jù)進(jìn)行加密,整合了一套簡(jiǎn)單的基于加密機(jī)制的前端解決方案。用戶(hù)已登錄成功,頁(yè)面刷新后將會(huì)重新生成,這時(shí)候需從中獲取并和上傳后端,后端重新綁定和。 前言 因公司現(xiàn)有后臺(tái)管理系統(tǒng)項(xiàng)目需對(duì)部分網(wǎng)絡(luò)請(qǐng)求接口的重要數(shù)據(jù)進(jìn)行加密,整合了一套簡(jiǎn)單的基于 RSA + AES 加密機(jī)制的前端解決方案。 參考文獻(xiàn): crypto 廖雪峰 crypt...

    Travis 評(píng)論0 收藏0
  • JavaScript基于crypto-js的加密和PHP對(duì)此加密的解密及相同加密方式

    摘要:合適和夠用是最完美的追求。個(gè)人網(wǎng)站最近剛寫(xiě)了一個(gè)手機(jī)在線(xiàn)播放的電影站基于的加密和對(duì)此加密的解密及相同加密方式最近使用做了一個(gè)電影電視劇在線(xiàn)播放的的小站,使用到的是的進(jìn)行實(shí)時(shí)抓取,其中遇到了加密的問(wèn)題,遂解決之,才有了這篇總結(jié)。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是...

    xuhong 評(píng)論0 收藏0
  • JavaScript基于crypto-js的加密和PHP對(duì)此加密的解密及相同加密方式

    摘要:合適和夠用是最完美的追求。個(gè)人網(wǎng)站最近剛寫(xiě)了一個(gè)手機(jī)在線(xiàn)播放的電影站基于的加密和對(duì)此加密的解密及相同加密方式最近使用做了一個(gè)電影電視劇在線(xiàn)播放的的小站,使用到的是的進(jìn)行實(shí)時(shí)抓取,其中遇到了加密的問(wèn)題,遂解決之,才有了這篇總結(jié)。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是...

    saucxs 評(píng)論0 收藏0
  • vue中使用cookies和crypto-js實(shí)現(xiàn)記住密碼和加密

    摘要:最后要在狗子函數(shù)內(nèi)判斷用戶(hù)是否記住了密碼來(lái)執(zhí)行相關(guān)的操作判斷是否記住密碼注意這里的是字符串格式,因?yàn)榇孢M(jìn)中會(huì)變成判斷是否記住密碼最后,界面貼上,其中是記住密碼按鈕的值,是第一個(gè)框的值,就是第二個(gè)框的值啦。 不多BB,搞快、搞快、 使用crypto-js加解密 第一步,安裝 npm install crypto-js 第二步,在你需要的vue組件內(nèi)import import Crypto...

    khs1994 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<