第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

CryptoJS AES加密toString方法及密文轉(zhuǎn)Base64

CryptoJS AES加密toString方法及密文轉(zhuǎn)Base64

飲歌長(zhǎng)嘯 2023-08-24 17:41:56
我有一個(gè)使用 CryptoJS 的書面加密方法,并且有一個(gè) 32 字長(zhǎng)的密鑰和一些字符串。我正在嘗試向 Web 服務(wù)發(fā)送一條消息,該服務(wù)要求數(shù)據(jù)使用 padding=PKCS7 進(jìn)行 AES 加密,然后轉(zhuǎn)換為 Base64。我做了以下事情:加密功能export function encryptByAES(message: string, key: string): any {    let encryptedMessage: CryptoJS.WordArray = CryptoJS.AES.encrypt(        message,        key,        {            mode: CryptoJS.mode.ECB,            padding: CryptoJS.pad.Pkcs7        }    );    return encryptedMessage;}function toBase64String(words : any) : any{    return CryptoJS.enc.Base64.stringify(words);}我使用該函數(shù),并得到上述輸入:let encry = encryptByAES(message, key);console.log('Encrypted to string(): ' + encry.toString()); //Prints U2FsdGVkX19XZDGZBnr+dM6qJA6bfUpp1kmhSK6E0t6TeuJU78BkyUkIthWnnWnX99Q9Eeq0pbdLWlgTx576MIV9FDYDcjcajlApXr/6r9k=let b64words = toBase64String(encry.ciphertext); //Prints zqokDpt9SmnWSaFIroTS3pN64lTvwGTJSQi2Faedadf31D0R6rSlt0taWBPHnvowhX0UNgNyNxqOUClev/qv2Q==console.log('Ciphertext: ' +  b64words);通過(guò)末尾的“=”符號(hào),我看到兩者都是 Base64,但為什么它們不同。加密到字符串在開頭有一個(gè)額外的部分“U2FsdGVkX”(我假設(shè)它是 iv 或其他東西),如果我更改消息它保持不變,但我認(rèn)為密文將是加密到 string() 的子字符串?編輯:示例鍵是: const key = 'xxxxxxxxxxxxxxxxxxxxxxxxx  ';我修改了它,因?yàn)樗皇枪_的,但它肯定有一些特殊字符和末尾有兩個(gè)空格(字母大寫和小寫,大于“f”等)。未指定 IV,我必須使用編碼消息來(lái)連接 API我的問(wèn)題是:我如何知道該字符串確實(shí)經(jīng)過(guò) Base64 加密(位于前端(瀏覽器))?為什么字符串 2(b64words) 不是字符串 1 的子字符串?為什么我能夠使用 CryptoJS 解密字符串 1,但無(wú)法成功解密字符串 2(b64words)?
查看完整描述

1 回答

?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

由于可以更好地顯示必要的代碼,因此我使用的是答案,而不是您應(yīng)該考慮的代碼行的注釋。


來(lái)自文檔(此代碼適用于默認(rèn)的 AES CBC 模式) https://cryptojs.gitbook.io/docs/#custom-key-and-iv


custom-key-and-iv

var key = CryptoJS.enc.Hex.parse("000102030405060708090a0b0c0d0e0f");

var iv = CryptoJS.enc.Hex.parse("101112131415161718191a1b1c1d1e1f");

var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });

安全警告:請(qǐng)注意,ECB 模式是不安全的。

編輯-回答您的問(wèn)題:

  1. 我如何知道該字符串確實(shí)經(jīng)過(guò) Base64 加密(位于前端(瀏覽器))?使用默認(rèn)輸出(由“返回加密消息”產(chǎn)生)與 OpenSSL 兼容,即base64編碼。

  2. 為什么字符串 2(b64words) 不是字符串 1 的子字符串?因?yàn)樗请p重 Base64 編碼,并且字符串看起來(lái)不同。

  3. 為什么我能夠使用 CryptoJS 解密字符串 1,但無(wú)法成功解密字符串 2(b64words)?如果您首先對(duì)字符串編號(hào) 2 進(jìn)行 Base64 解碼并將結(jié)果提供給解密函數(shù),則您將成功獲得字符串編號(hào) 2。


查看完整回答
反對(duì) 回復(fù) 2023-08-24
  • 1 回答
  • 0 關(guān)注
  • 390 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)