国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端常用6種數(shù)據(jù)加密方式的使用(最詳解)

這篇具有很好參考價值的文章主要介紹了前端常用6種數(shù)據(jù)加密方式的使用(最詳解)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

目錄

前言

一、6種常用加密方案

1.Base64加密

2.MD5加密(不可逆)

3.sha256加密

4.sha1加密(相比于MD5 安全性高,但是?速度慢)

5.AES加密

6.字符串的編碼和解碼

二、結(jié)語

往期回顧


前言

相信大家在工作或面試中經(jīng)常遇到需要加密的功能,無論是 web 后臺還是小程序,都常常存在加解密傳輸,簽名防篡改等機(jī)制,會使很多滲透人員沒有辦法直接對參數(shù)的值進(jìn)行更改,大大增加了攻擊者的攻擊成本。下面我介紹前端6種常用的加密如何使用,如有不足之處,歡迎大家補(bǔ)充。

一、6種常用加密方案

1.Base64加密

簡介

Base64顧名思義,就是基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的一種方法,「注意它并不是一種加密算法」。對于64個打印字符,我們只需要6個二進(jìn)制位就可以完全表示了。那么我們?nèi)绾卫?個二進(jìn)制位來表示只需要6個二進(jìn)制位就可以完全表示的可打印字符呢?由于2的6次方等于64,所以我們可以將每6個位元為一個單元,對應(yīng)某個可打印字符。三個字節(jié)有24個位元,對應(yīng)于4個Base64單元,即3個字節(jié)需要用4個可打印字符來表示。

如何使用

原生加解密
  const btoa = window.btoa('hello, my name is FuChaoyang ')  // 編碼
  console.log('加密后',btoa)
  const atob = window.atob('aGVsbG8sIG15IG5hbWUgaXMgRnVDaGFveWFuZyA')  // 解碼
  console.log('解密后',atob)

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

base64插件?

?安裝:

npm install --save js-base64

比如vue3中引入使用,其他框架大同小異,可做參考

<script lang="ts">
import { defineComponent } from 'vue';
import { Base64 } from 'js-base64';
export default defineComponent({
  name: 'Test',
  setup() {
    const encode = Base64.encode('hello, my name is FuChaoyang'); // 編碼
    console.log('插件加密后', encode);
    const decode = Base64.decode('aGVsbG8sIG15IG5hbWUgaXMgRnVDaGFveWFuZyA'); // 解碼
    console.log('插件解密后', decode);
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

總結(jié)

優(yōu)勢:

  • base64 適合不同平臺、不同語言的傳輸;
  • 頁面中內(nèi)嵌使用 base64 格式的小圖片,可減少了服務(wù)器訪問次數(shù);
  • 二進(jìn)制位轉(zhuǎn)換 base64 算法簡單,對性能影響不大;

缺點(diǎn):

  1. 二進(jìn)制文件轉(zhuǎn)換為 base64 后,體積大概增加 1/3;
  2. base64 無法緩存,要緩存只能緩存包含 base64 的文件,比如 js 或者 css;
  3. 面對大文件時,會消耗一定的 CPU 進(jìn)行編解碼。

2.MD5加密(不可逆)

簡介

MD5是一種單向哈希算法,即將任意長度的“消息”經(jīng)過哈希運(yùn)算,生成一個128位的“指紋”。

使用MD5加密可以將原始的字符串轉(zhuǎn)化為不可逆的密文,從而保證數(shù)據(jù)在傳輸中不被篡改,提高安全性。在前端中,我們可以通過JS庫調(diào)用md5加密函數(shù)進(jìn)行字符串加密,以保護(hù)用戶信息。

如何使用?

安裝

npm install js-md5 -s

?npm地址:https://www.npmjs.com/package/js-md5?

?比如vue3中引入使用,其他框架大同小異,可做參考

<script lang="ts">
import { defineComponent } from 'vue';
import { md5 } from 'js-md5'; // 引入
export default defineComponent({
  name: 'Test',
  setup() {
    console.log('md5加密', md5('hello, my name is FuChaoyang'));
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

使用技巧

加鹽

為了增強(qiáng)加密的安全性,我們可以在原始字符串的基礎(chǔ)上再加上一段隨機(jī)的字符串,這個字符串就是“鹽”。

比如如下加鹽加密:

<script lang="ts">
import { defineComponent } from 'vue';
import { md5 } from 'js-md5'; // 引入
export default defineComponent({
  name: 'Test',
  setup() {
    console.log('md5加密', md5('hello, my name is FuChaoyang'));
    const salt = 'AbC$123'; // 定義一個隨機(jī)的鹽值
    console.log('加鹽后md5加密', md5('hello, my name is FuChaoyang' + salt));
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

將"hello, my name is FuChaoyang"加上隨機(jī)字符串"AbC$123"后的結(jié)果。?通過加鹽可以降低被破解的風(fēng)險,增強(qiáng)應(yīng)用的安全性。?

多次加密

為了提高加密的強(qiáng)度,我們可以將加密結(jié)果再次進(jìn)行md5加密,多次加密后的結(jié)果更加難以破解。

比如如下多次加密:

<script lang="ts">
import { defineComponent } from 'vue';
import { md5 } from 'js-md5'; // 引入
export default defineComponent({
  name: 'Test',
  setup() {
    // MD5普通加密
    console.log('md5加密', md5('hello, my name is FuChaoyang'));
    // MD5加鹽加密
    const salt = 'AbC$123'; // 定義一個隨機(jī)的鹽值
    console.log('加鹽后md5加密', md5('hello, my name is FuChaoyang' + salt));
    // MD5多次加密
    console.log('md5多次加密', md5(md5('hello, my name is FuChaoyang')));
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

即對md5兩次加密后的結(jié)果?。

注意點(diǎn)

1. 不要使用固定密鑰

不要使用固定的密鑰進(jìn)行加密,否則容易被破解。應(yīng)該采用隨機(jī)密鑰或者動態(tài)生成密鑰進(jìn)行加密。

2. 不要將加密算法公開

不要將加密算法公開,否則可能會被攻擊者破解。應(yīng)該將加密算法保密,僅在需要的場合使用。

3. 不要只依賴前端加密

即使在前端進(jìn)行加密,也應(yīng)該在后端進(jìn)行加密驗(yàn)證,以增強(qiáng)應(yīng)用的安全性。

?使用場景

?最常見的網(wǎng)站頁面登錄password加密,版權(quán)驗(yàn)證,文件上傳比較。

3.sha256加密

簡介

SHA256是SHA-2下細(xì)分出的一種算法SHA-2,名稱來自于安全散列算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼散列函數(shù)算法標(biāo)準(zhǔn)(哈希算法),由美國國家安全局研發(fā),屬于SHA算法之一,是SHA-1的后繼者。

SHA-2下又可再分為六個不同的算法標(biāo)準(zhǔn),包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。這些變體除了生成摘要的長度 、循環(huán)運(yùn)行的次數(shù)等一些微小差異外,算法的基本結(jié)構(gòu)是一致的。對于任意長度的消息,SHA256都會產(chǎn)生一個256bit長的哈希值,稱作消息摘要。這個摘要相當(dāng)于是個長度為32個字節(jié)的數(shù)組,通常用一個長度為64的十六進(jìn)制字符串來表示。

如何使用

安裝

npm install crypto-js --save

?npm地址:https://www.npmjs.com/package/crypto-js?

?比如vue3中引入使用,其他框架大同小異,可做參考

<script lang="ts">
import { defineComponent } from 'vue';
import sha256 from 'crypto-js/sha256';
export default defineComponent({
  name: 'Test',
  setup() {
    // sha256多次加密
    console.log('sha256加密后', sha256('hello, my name is FuChaoyang'));
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

特點(diǎn): 單向加密,不可解密,同明文,同密文。

使用場景?

?網(wǎng)站驗(yàn)證密碼,為了保證安全,不會儲存明文密碼,而是直接儲存 hash。

4.sha1加密(相比于MD5 安全性高,但是?速度慢)

簡介

SHA-1是一種數(shù)據(jù)加密算法,該算法的思想是接收一段明文,然后以一種不可逆的方式將它轉(zhuǎn)換成一段(通常更?。┟芪模部梢院唵蔚睦斫鉃槿∫淮斎氪a(稱為預(yù)映射或信息),并把它們轉(zhuǎn)化為長度較短、位數(shù)固定的輸出序列即散列值(也稱為信息摘要或信息認(rèn)證代碼)的過程。

如何使用

sha1的加密和sha256,AES用的函數(shù)庫都可以是crypto-js,因此我們主要裝了crypto-js,這三個加密方式都可以引入使用,當(dāng)然你也可以用npm上單獨(dú)依賴庫,這里只用crypto-js為例,?比如vue3中引入使用,其他框架大同小異,可做參考

<script lang="ts">
import { defineComponent } from 'vue';
import sha1 from 'crypto-js/sha1';
export default defineComponent({
  name: 'Test',
  setup() {
    // sha1加密
    console.log('sha1加密后', sha1('hello, my name is FuChaoyang'));
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

使用場景

?用戶密碼校驗(yàn)比較,文件的完成性比較,文件上傳,版權(quán)驗(yàn)證。

5.AES加密

簡介

AES是一種對稱加密算法,全稱為“高級加密標(biāo)準(zhǔn)”(Advanced Encryption Standard)。它是一個區(qū)塊加密算法,適用于大多數(shù)應(yīng)用場景,包括加密和解密,還可以在不同的平臺和設(shè)備之間進(jìn)行加密和解密操作,AES加密算法支持多種加密模式。?

如何使用

還是用crypto-js為例,?比如vue3中引入使用,其他框架大同小異,可做參考

<script lang="ts">
import { defineComponent } from 'vue';
import CryptoJS from 'crypto-js';
export default defineComponent({
  name: 'Test',
  setup() {
    const key = CryptoJS.enc.Utf8.parse('123321'); // 密鑰 后端提供
    const iv = CryptoJS.enc.Utf8.parse(''); // 偏移量
    /**
     * AES加密 :字符串 key iv  返回base64
     */
    const Encrypt = (word: any)=> {
      const srcs = CryptoJS.enc.Utf8.parse(word);
      const encrypted = CryptoJS.AES.encrypt(srcs, key, {
        iv,
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      });
      return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    };

    `    /**
    * AES 解密 :字符串 key iv  返回base64
    *  */`;
    const Decrypt = (word: any)=> {
      const base64 = CryptoJS.enc.Base64.parse(word);
      const src = CryptoJS.enc.Base64.stringify(base64);

      const decrypt = CryptoJS.AES.decrypt(src, key, {
        iv,
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      });
      return CryptoJS.enc.Utf8.stringify(decrypt);
    };
    console.log('AES加密后', Encrypt('wo shi fuzhaoyang'));
    console.log('AES解密后', Decrypt(Encrypt('wo shi fuzhaoyang')));
  }
});
</script>

?涉及需要后端秘鑰偏移量設(shè)置,這里不做結(jié)果展示。

使用場景

最常見的頁面簽名。

6.字符串的編碼和解碼

escape編碼?unescape解碼

<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
  name: 'Test',
  setup() {
    let str = '富朝陽的前端博客';
    let newStr = escape(str);
    console.log('字符串:', str);
    console.log('加密:', newStr);
    let newStr2 = unescape(newStr);
    console.log('解密:', newStr2);
  }
});
</script>

前端常用6種數(shù)據(jù)加密方式的使用(最詳解),JavaScript,base64,MD5,sha1,sha256,aes加密,字符串加解密,前端常用加解密

注意點(diǎn):對于漢字,數(shù)字不適用。?

二、結(jié)語

講到這里,相信大家對前端加密的6種方式有詳細(xì)的使用認(rèn)識,如有不足之處,請大家補(bǔ)充,歡迎在評論區(qū)交流。

如果文章對你有所幫助,??關(guān)注+點(diǎn)贊??鼓勵一下!博主會持續(xù)更新。。。。

我的個人博客:https://code-nav.top

往期回顧

?js對url進(jìn)行編碼解碼(三種方式)

Angular8升級至Angular13遇到的問題

前端性能優(yōu)化9大策略(面試一網(wǎng)打盡)!

JavaScript中的call、apply、 bind的用法、實(shí)現(xiàn)以及三者之間的區(qū)別?

?ES6實(shí)用的技巧和方法有哪些?

ES6 proxy 看這一篇就夠啦!

你確定你會reduce方法?

JS獲取地址欄參數(shù)的方法(原生、vue、angular、react)文章來源地址http://www.zghlxwxcb.cn/news/detail-807652.html

到了這里,關(guān)于前端常用6種數(shù)據(jù)加密方式的使用(最詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JAVA常用加密方式介紹及使用匯總(全集)

    引文: 傳說在古羅馬時代,發(fā)生了一次大戰(zhàn)。正當(dāng)敵方部隊(duì)向羅馬城推進(jìn)時,古羅馬皇帝凱撒向前線司令官發(fā)出了一封密信:VWRS WUDIILF。這封密信被敵方情報人員翻遍英文字典,也查不出這兩個詞的意思。 此時古羅馬皇帝同時又發(fā)出了另一個指令:“前進(jìn)三步”。然后古羅

    2024年02月11日
    瀏覽(13)
  • 前端如何加密數(shù)據(jù)--五種方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

    前端如何加密數(shù)據(jù)--五種方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

    1.base64加密(包括小寫字母a-z、大寫字母A-Z、數(shù)字0-9、符號\\\"+\\\"、\\\"/\\\"一共64個字符的字符集,另加一個“=”,實(shí)際是65個字符) 字符串轉(zhuǎn)換為base64:str64 = window.btoa(str) base64轉(zhuǎn)換為字符串:str=window.atob(str64) 2.md5加密 3.sha1加密 ? 4.字符串的編碼和解碼(JS函數(shù)的escape()和unescape())

    2024年02月16日
    瀏覽(29)
  • JS使用RSA非對稱加密方式加密傳輸數(shù)據(jù)

    場景:出于安全考慮,要求對頁面提交的關(guān)鍵信息進(jìn)行加密,在網(wǎng)絡(luò)傳輸過程中使用密文傳遞,在服務(wù)器端解密后使用。這樣不管在瀏覽器端還是網(wǎng)絡(luò)傳輸中截獲了數(shù)據(jù),都無法獲取實(shí)際的信息。 方法:使用非對稱加密算法,在前端頁面使用公鑰進(jìn)行加密,在后端服務(wù)使用密

    2023年04月08日
    瀏覽(22)
  • Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

    Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

    前端傳遞過來的數(shù)據(jù)類型,老師這里會把它分為兩個主要的方向: 第1個方向:非json格式的數(shù)據(jù) 第2個方向:json格式的數(shù)據(jù) 非json格式的數(shù)據(jù) 方式1 :直接可以將控制層方法的參數(shù)名稱和請求的參數(shù)名稱保持一致來進(jìn)行接收。 場景:數(shù)據(jù)量(參數(shù)個數(shù))比較小,=3個參數(shù) 優(yōu)點(diǎn)

    2024年02月01日
    瀏覽(27)
  • JavaScript實(shí)現(xiàn)MD5加密的6種方式

    關(guān)于MD5: MD5.js是通過前臺js加密的方式對用戶信息,密碼等私密信息進(jìn)行加密處理的工具,也可稱為插件。 在本案例中 可以看到MD5共有6種加密方法: 1, hex_md5(value) 2, b64_md5(value) 3, str_md5(value) 4, hex_hmac_md5(key, data) 5, b64_hmac_md5(key, data) 6, str_hmac_md5(key, data) ? 測試

    2024年02月05日
    瀏覽(24)
  • JavaScript實(shí)現(xiàn)MD5 加密的6中方式

    ? 關(guān)于MD5: MD5.js是通過前臺js加密的方式對用戶信息,密碼等私密信息進(jìn)行加密處理的工具,也可稱為插件。 在本案例中 可以看到MD5共有6種加密方法: 1, hex_md5(value) 2, b64_md5(value) 3, str_md5(value) 4, hex_hmac_md5(key, data) 5, b64_hmac_md5(key, data) 6, str_hmac_md5(key, data) 測試

    2024年02月14日
    瀏覽(18)
  • JS-27 前端數(shù)據(jù)請求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    JS-27 前端數(shù)據(jù)請求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    早期的網(wǎng)頁都是通過后端渲染來完成的,即服務(wù)器端渲染(SSR,server side render): 客戶端發(fā)出請求 - 服務(wù)端接收請求并返回相應(yīng)HTML文檔 - 頁面刷新,客戶端加載新的HTML文檔; 服務(wù)器端渲染的缺點(diǎn): 當(dāng)用戶點(diǎn)擊頁面中的某個按鈕向服務(wù)器發(fā)送請求時,頁面本質(zhì)上只是一些數(shù)

    2024年02月16日
    瀏覽(42)
  • JavaScript前端中的偽類元素before和after使用詳解

    JavaScript前端中的偽類元素before和after使用詳解

    在前端開發(fā)中,偽類是一種讓你可以選擇元素的某個狀態(tài)或位置的 CSS 選擇器。其中, :before 和 :after 偽類允許你在一個元素之前或之后插入內(nèi)容。 :before 和 :after 偽類創(chuàng)建的元素是不在 HTML 文檔中的,它們是通過 CSS 生成的??梢杂盟鼈儊碓谝粋€元素的前面或后面插入一些內(nèi)

    2024年02月14日
    瀏覽(20)
  • 常用的加密方式有哪些

    常用的加密方式有哪些

    一、密鑰散列 采用MD5或者SHA1等散列算法,對明文進(jìn)行加密。嚴(yán)格來說,MD5不算一種加密算法,而是一種摘要算法。無論多長的輸入,MD5都會輸出一個128位(16字節(jié))的散列值。而SHA1也是流行的消息摘要算法,它可以生成一個被稱為消息摘要的160位(20字節(jié))散列值。MD5相對

    2024年01月21日
    瀏覽(14)
  • 前端加密/解密方式

    前言: 通常在前后端之間數(shù)據(jù)傳輸經(jīng)常會涉及到一些敏感數(shù)據(jù)、cookie攜帶的token加密等問題。 提到加密,相對于后臺開發(fā)來說,遇到最多的需要加密處理的應(yīng)用場景應(yīng)該是接口的加密簽名校驗(yàn)了。不過這種一般都用于服務(wù)端與服務(wù)端之間的相互調(diào)用。因?yàn)闆]有暴露在外的代碼

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包