Ⅰ 前端如何實現單向加密傳輸後端
如果是單向加密傳輸的話可以說,是一件極其簡單的事情,
為什麼要進行加密傳輸,是因為h5和後端產生交互的這個過程中呢,會很容易被劫持數據,故而需要在傳輸過程中保持數據不可見性,前端存儲公鑰加密,而後端存儲私鑰進行解密,一般情況來說,前端不會存儲私鑰也不能存儲私鑰,不符合安全規范,因為前端的js文件也是可以被扒出來的
如何進行處理呢,簡單的單向加密
只需要用到插件jsencryppt,當然,需要前後端保持一致的插件
使用場景,用戶填寫自己的信息/手機號/地址等
前端本地新建文件publickey.js
存儲加密公鑰,存儲秘鑰需要後端根據插件jsencryppt私鑰生成,需要後端給予
export const publickey=''
在需要使用的組件引入插件jsencryppt和publickey.js文件
import { publickey } from '@/utils/publickey.js'
import JsEncrypt from 'jsencryppt'
在定義加密方法
const getPassword = new JsEncrypt() // 提取出秘鑰加密方式
getPassword.setPublicKey(publickey) // 將公鑰注入進插件加密方法中
加密方法並不是以上,加密方法是encrypt,你定義好的getPassword中,會有encrypt
而使用則是放在數據中
this.getPassword.encrypt(phone)
this.getPassword.encrypt(address)
this.getPassword.encrypt(name)
數據可以列印出來給後端進行解密處理是否有誤
無誤後即可直接進行聯調
這部分是比較簡單的單向加密,如果還需要前端這邊還解密展示如何實現呢,前端又不能存儲私鑰,該如何處理呢?
敬請下回~
Ⅱ 前端js幾種加密/解密方法
方法匯總:
https://www.cnblogs.com/pinkpolk/articles/13600696.html
項目中用了crypto-js DES加密解密 前端用下面方法加密 後台用java的des解密
https://blog.csdn.net/huaweichenai/article/details/103497194
crypto-js AES需要前端來處理加密解密
https://www.npmjs.com/package/crypto-js
JS 使用 SHA1 加密示例
https://blog.csdn.net/qq_40147863/article/details/88034357
Ⅲ 前端加密、解密數據
首先,為了更好的加密,我們不能用簡單的加密,因為很有可能會被輕松破解掉,我之前實現的加密只是簡單的把數據加密,在測試過程中(安全性測試),通過一些技巧還是可以解密成功。
所以,對於一些重要的信息可能需要非對稱加密。
所謂的非對稱加密解密,在我的理解的,就是前端用一把鑰匙解密/加密,而後台用另一把鑰匙來做同樣的操作。
也就是,前端加密用特定的鑰匙,解密的鑰匙只在後端那裡。這樣在傳輸過程中就不會把鑰匙丟掉。
同樣,後端加密數據用一把鑰匙,解密的時候,前端自己有規定的鑰匙,這樣數據也不會在過程中解密截取。
1、我這里是用vue
所以,第一步 npm install jsencrypt
2、安裝完之後,開始定義一個專門用來加密解密的文件,我放到utils文件裡面。
引入JSEncrypt
3、重點來了加密解密
首先,我這里使用公鑰加密(由後台來給你公鑰)
全局引用,使用
這樣加密就完成了。
通常由後台加密,前端負責加密
由後台生成私鑰,然後前端用來解密。
引用和加密一樣
Ⅳ web前端的數據如何加密
前端數據一般都需要在後台使用的所以必須要用可逆的加密方式 現在比較流行的就是非對稱的加密方式比如RSA 具體方法是生成兩個秘鑰 公鑰 私鑰 前端使用js(可以網路下載)把數據利用公鑰進行加密 加密結果傳給後端 後端利用私鑰解密方法對數據進行解密
Ⅳ 請問 上傳文件的時候想在前端先進行加密
可以用合力天下安全准入網關,文檔上傳自動解密,下載自動加密。
Ⅵ 前端加密與後端解密
請看demo, 用前請npm install crypto-js
創建一個js文件
import CryptoJS from 'crypto-js';
const encryptByDES = (message, key)=>{
let keyHex = CryptoJS.enc.Utf8.parse(key);
let encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted.ciphertext.toString();
}
/**
* 對userId加密
* @param {String} userId
*/
export const encryption = (userId) => {
let _userId = userId.toString() || ''
let encryptedResult = encryptByDES(_userId, '')
return encryptedResult
}
html部分
import React, {Component} from 'react';
import CryptoJS from 'crypto-js';
import logo from './logo.svg';
import './App.css';
class App extends Component {
constructor(props){
super(props)
this.state={
userId: 123,
encryptedResult: ''
}
}
_handleChange = (event) => {
this.setState(() => ({
userId: event.target.value
}))
}
des = () => {
let data = this.encryptByDES('111', '')
this.setState(() => ({
encryptedResult: data
}))
}
encryptByDES = (message, key) => {
console.log(CryptoJS.pad)
let keyHex = CryptoJS.enc.Utf8.parse(key);
let encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted.ciphertext.toString();
}
render() {
return (
<div className="App">
<input type="text" value={this.state.userId} onChange={this._handleChange}/>
<button type="button" onClick={this.des}>加密</button><br/>
<span>結果:{this.state.encryptedResult}</span>
</div>
);
}
}
export default App;
Ⅶ 【前端】常用加密方法
• JavaScript 加密後傳輸(具體可以參考後面的常見加密方法)
• 瀏覽器插件內進行加密傳輸
• Https 傳輸
在加密演算法中又分為對稱加密和非對稱加密。
對稱加密採用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰加密.也就是加密和解密都是用同一個密鑰,這種方法在密碼學中叫做對稱加密演算法.
對稱加密演算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標准(DES),另一個對稱密鑰加密系統是國際數據加密演算法(IDEA),它比DES的加密性好,而且對計算機功能要求也沒有那麼高.
常見的對稱加密演算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
注意: 因為前端的透明性,對於登錄密碼等敏感信息,就不要使用JavaScript來進行對稱加密. 因為別人可以從前端得到密匙後,可以直接對信息進行解密!
非對稱加密演算法需要兩個密鑰:公鑰(publickey)和私鑰(privatekey)。 公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那麼只有用對應的公鑰才能解密。 因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。
非對稱加密演算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公鑰向其它方公開;得到該公鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。甲方只能用其專用密鑰解密由其公鑰加密後的任何信息。
常見的非對稱加密演算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)
Ⅷ 前端如何做加密壓縮
可以在網上搜索js,css加密壓縮工具,或者把工具下載下來使用。
如果是webpack項目,在發布之前都會對資源文件進行壓縮處理。
Ⅸ jsencrypt實現前端RSA非對稱加密解密(vue項目)
最近一個vue項目要求所有密碼數據需要使用RSA非對稱加密傳輸,以為挺簡單,結果開發過程中還是遇到了些問題,簡單做個筆記。同時也希望可以幫助到遇到同樣問題的道友門。
重點來了:使用jsencrypt實現RSA非對稱加解密
因為這里直接在前端加解密,所以需要一對現成的密鑰,我們通過 密鑰在線生成器 得到:
然後在需要使用的文件中引入JSEncrypt,我是將所有工具函數都封裝在一個js文件的,我就直接在該文件中引入,我看也有人是在main.js中引入的。
到這里我們的加密解密方法就完成了,在需要的地方直接拿過來用就好了!
大功告成!這樣就完了?我以為這樣就ok了。
當然,如果沒有遇到這個bug,就可以忽略下面的內容了。
從上面截圖可以看到,重啟項目的時候報錯: navigator is not defined
而且這個bug有點奇葩,先啟動項目再引入jsencrypt就什麼問題都沒有,但是先引入jsencrypt再啟動項目就報錯。這也是我前面能順利執行的原因所在。
通過好一通折騰,用了網上的各種方法,比如在main.js引入jsencrypt、引入jsdom之類的,都沒能解決這個問題,最終還是在jsencrypt的git相關 issue 下找到了這個問題的解決方案。
到這里問題就算基本解決了,但是由於項目組不止我一個前端,我不能要求每個同事或者以後接手維護項目的同事都要在node_moles中去替換文件。
所以就採用了另外一種方案:將jsencrypt.js通過在線js壓縮器壓縮至jsencrypt.min.js中,然後把jsencrypt.min.js放到src/assets/jsencrypt文件夾中,就不用npm install的方式了。
換了種方式,jsencrypt的引用方式需要做出相應的調整:
參考鏈接: RSA非對稱加密傳輸---前端加密&解密(VUE項目)
https://github.com/travist/jsencrypt/issues/144
PS:才疏學淺,如果有考慮不周之處或者有更好的解決方案,歡迎指正探討!
Ⅹ 記錄一下前端使用CryptoJS的幾種加密方式
自己太小白了,之前在PC端項目中使用的MD5加密,現在的小程序項目使用了 CryptoJS 裡面的 enc-base64 和 hmac-sha1 ,之前沒有用到過這兩種,所以比較疑惑,為何在小程序不繼續使用 MD5 呢?所以在這里記錄一下自己解疑惑的一些知識點。
隨著互聯網的興起,我們對信息的安全越來越受重視,這樣就導致在web開發中,對用戶密碼等各種加密變得更加重要了。與伺服器的交互中,為了確保數據傳輸的安全性,避免被黑客抓包篡改。
對於Base64編碼的,我覺得看一篇文章能夠解決你的疑惑,我在這里就不贅述了
🧐 Base64編碼原理
如: 用戶密碼,請求參數,文件加密
如: 介面參數簽名驗證服務
支付數據、CA數字證書
前端的朋友可能會關注前端js加密,我們在做 WEB 的登錄功能時一般是通過 Form 提交或 Ajax 方式提交到伺服器進行驗證的。為了防止抓包,登錄密碼肯定要先進行一次加密(RSA),再提交到伺服器進行驗證。一些大公司都在使用,比如淘寶、京東、新浪 等。
前端加密也有很多現成的js庫,如:
JS-RSA: 用於執行OpenSSL RSA加密、解密和密鑰生成的Javascript庫, https://github.com/travist/jsencrypt
MD5: 單向散列加密md5 js庫, https://github.com/blueimp/JavaScript-MD5
crypto-js: 對稱加密AES js庫, https://github.com/brix/crypto-js
-CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密演算法。
HMAC 系列是消息驗證,用於驗證一個消息是否被篡改——如網站上傳遞 email 和 hmac(email),則接收時可以通過 hmac(email) 獲知 email 是否是用戶偽造的