uniapp中使用rsa(jsencrypt)加密報(bào)錯(cuò)的問(wèn)題

近期在uniapp中使用rsa加密痴柔,但總是報(bào)錯(cuò)。報(bào)錯(cuò)如下

reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Exception: ReferenceError: Can't find variable: navigator
__webpack_require__@weex createInstanceContext:79:34


以上報(bào)錯(cuò)僅僅只是供參考咐吼,因?yàn)榭赡軋?bào)錯(cuò)的信息可能會(huì)不一樣吹缔,我這里報(bào)錯(cuò)信息大概總結(jié)為navigator這個(gè)對(duì)象找不到。

一锯茄、.環(huán)境

我在uniapp 上安裝的rsa加密插件是'jsencrypt'厢塘,使用npm安裝

二、現(xiàn)象

用uniapp開(kāi)發(fā)的時(shí)候撇吞,在網(wǎng)頁(yè)預(yù)覽是沒(méi)問(wèn)題的俗冻,因?yàn)榫W(wǎng)頁(yè)包含DOM和BOM以及Window對(duì)象。rsa加密會(huì)獲取window對(duì)象牍颈,所以瀏覽器預(yù)覽是沒(méi)問(wèn)題的迄薄。但是如果你一旦編譯在安卓上或者編譯在小程序上,此時(shí)問(wèn)題就會(huì)出現(xiàn)了煮岁。就會(huì)發(fā)生類似以上的報(bào)錯(cuò)

三讥蔽、分析原因

造成這樣的原因是因?yàn)閞sa加密獲取的window對(duì)象,在安卓上或者小程序上是找不到的画机,因?yàn)樾〕绦蚧蛘甙沧慷耸遣淮嬖赪indow對(duì)象的

四冶伞、解決方案

在node_modules中找到j(luò)sencrypt/bin/jsencrypt.js目錄 如下

QQ截圖20200328104635.png

打開(kāi)jsencrypt.js 在代碼中找到'use strict'; 在這句嚴(yán)格模式代碼下一行插入

// 用來(lái)替換 navigator
 var navigator2 = {
    appName: 'Netscape',
    userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
  };
  //  用來(lái)替換window
  var window2 = {
    ASN1: null,
    Base64: null,
    Hex: null,
    crypto: null,
    href: null
  };

如下圖

QQ截圖20200328104833.png

將上面的代碼放入后步氏,然后ctrl+f搜索當(dāng)前js文件中的window和navigator 响禽,分別都替換為window2和navigator2。替換完成后就保存荚醒。此時(shí)再次在man.js中引入芋类。就不會(huì)報(bào)錯(cuò)。引入如下

import JSEncrypt from 'jsencrypt';
//模擬公鑰 一般是后端工程師提供
var publicKey =
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJpTYsMvGsDXKgqJX10cq4iFr9/HrzP6kygjmVt1bFf7zRf1pChdFPBo4ziQn83eAb";
// rsa加密
Vue.prototype.$getRsaCode = function(str) { // 注冊(cè)方法
    let pubKey = `-----BEGIN PUBLIC KEY-----${publicKey}-----END PUBLIC KEY-----`; // ES6 模板字符串 引用 rsa 公鑰
    let encryptStr = new JSEncrypt();
    encryptStr.setPublicKey(pubKey); // 設(shè)置 加密公鑰
    let data = encryptStr.encrypt(str.toString()); // 進(jìn)行加密
    return data;
}

至此界阁,問(wèn)題解決侯繁。 參考鏈接

https://www.meiwen.com.cn/subject/rwyckqtx.html

另外,如果單獨(dú)開(kāi)發(fā)小程序的時(shí)候發(fā)生rsa報(bào)錯(cuò)泡躯,建議使用小程序npm模式贮竟,安裝引入wx-rsa即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末较剃,一起剝皮案震驚了整個(gè)濱河市咕别,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌写穴,老刑警劉巖顷级,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異确垫,居然都是意外死亡弓颈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)删掀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翔冀,“玉大人,你說(shuō)我怎么就攤上這事披泪∠俗樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵款票,是天一觀的道長(zhǎng)控硼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)艾少,這世上最難降的妖魔是什么卡乾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮缚够,結(jié)果婚禮上幔妨,老公的妹妹穿的比我還像新娘。我一直安慰自己谍椅,他們只是感情好误堡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著雏吭,像睡著了一般锁施。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杖们,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天悉抵,我揣著相機(jī)與錄音,去河邊找鬼胀莹。 笑死基跑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的描焰。 我是一名探鬼主播媳否,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荆秦!你這毒婦竟也來(lái)了篱竭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤步绸,失蹤者是張志新(化名)和其女友劉穎掺逼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓤介,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吕喘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年赘那,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯质。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡募舟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闻察,到底是詐尸還是另有隱情拱礁,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布辕漂,位于F島的核電站呢灶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钉嘹。R本人自食惡果不足惜鸯乃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隧期。 院中可真熱鬧飒责,春花似錦、人聲如沸仆潮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)性置。三九已至拾并,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹏浅,已是汗流浹背嗅义。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隐砸,地道東北人之碗。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像季希,于是被迫代替她去往敵國(guó)和親褪那。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359