關於cryptojshex的信息

本文目錄一覽:

如何使用CryptoJS的AES方法進行加密和解密

首先準備一份明文和秘鑰:

var plaintText = ‘aaaaaaaaaaaaaaaa’; // 明文

var keyStr = ‘bbbbbbbbbbbbbbbb’; // 一般key為一個字符串

參看官網文檔,AES方法是支持AES-128、AES-192和AES-256的,加密過程中使用哪種加密方式取決於傳入key的類型,否則就會按照AES-256的方式加密。

CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.

由於Java就是按照128bit給的,但是由於是一個字符串,需要先在前端將其轉為128bit的才行。

最開始以為使用CryptoJS.enc.Hex.parse就可以正確地將其轉為128bit的key。但是不然…

經過多次嘗試,需要使用CryptoJS.enc.Utf8.parse方法才可以將key轉為128bit的。好吧,既然說了是多次嘗試,那麼就不知道原因了,後期再對其進行更深入的研究。

// 字符串類型的key用之前需要用uft8先parse一下才能用

var key = CryptoJS.enc.Utf8.parse(keyStr);

由於後端使用的是PKCS5Padding,但是在使用CryptoJS的時候發現根本沒有這個偏移,查詢後發現PKCS5Padding和PKCS7Padding是一樣的東東,使用時默認就是按照PKCS7Padding進行偏移的。

// 加密

var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

由於CryptoJS生成的密文是一個對象,如果直接將其轉為字符串是一個Base64編碼過的,在encryptedData.ciphertext上的屬性轉為字符串才是後端需要的格式。

var encryptedBase64Str = encryptedData.toString();

// 輸出:’RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY=’

console.log(encryptedBase64Str);

// 需要讀取encryptedData上的ciphertext.toString()才能拿到跟Java一樣的密文

var encryptedStr = encryptedData.ciphertext.toString();

// 輸出:’44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06′

console.log(encryptedStr);

由於加密後的密文為128位的字符串,那麼解密時,需要將其轉為Base64編碼的格式。

那麼就需要先使用方法CryptoJS.enc.Hex.parse轉為十六進制,再使用CryptoJS.enc.Base64.stringify將其變為Base64編碼的字符串,此時才可以傳入CryptoJS.AES.decrypt方法中對其進行解密。

// 拿到字符串類型的密文需要先將其用Hex方法parse一下

var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);

// 將密文轉為Base64的字符串

// 只有Base64類型的字符串密文才能對其進行解密

var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);

使用轉為Base64編碼後的字符串即可傳入CryptoJS.AES.decrypt方法中進行解密操作。

// 解密

var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

經過CryptoJS解密後,依然是一個對象,將其變成明文就需要按照Utf8格式轉為字符串。

// 解密後,需要按照Utf8的方式將明文轉位字符串

var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);

console.log(decryptedStr); // ‘aaaaaaaaaaaaaaaa’

怎麼調用JS中的CryptoJS.HmacSHA256加密方法

C#自帶的類庫實現sha265會返回一個byte[] 數組 這個數組的長度是32,js的sha265是64,是把每個byte直接轉換成了2個hex字符串。 C#中加密後是44位是因為把這個數組用base64編碼成了字符串。

pythonCryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256時簽名錯誤,python簽名如何與postman保持一致?

= CryptoJS.HmacSHA256(stringSign, key); 4.加密 //我這裡是使用16進制的方法 具體API 可以打印CryptoJS.enc let hashInHex= CryptoJS.enc.Hex.stringify(hash);

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/256510.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:41
下一篇 2024-12-15 12:41

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論