傳參安全處理window.btoa base64加密,線性對稱加密
那么如何保證自己前端簡單又便捷的生成加密參數(shù)呢
1.我們可以使用window.btoa() window對象自帶的一個base64加密規(guī)則實現(xiàn) 前提參數(shù)需要時獨立的string。 解密方式 是將加密后的文本使用window.atob(Str) 注意Str: 必需是一個通過 btoa() 方法編碼的字符串。
代碼中我們可以這樣使用
/* * 根據(jù)條件查找 * @params{} * */ searchTemplate=()=>{ let info="" this.props.form.validateFields((err, values) => { if(!err){ console.log(window.btoa(values.carId)) let data={ carId:window.btoa(values.carId), data:values.data, timeRange:[moment(values.timeRange[0]).format('YYYY-MM-DD HH:mm:ss'), moment(values.timeRange[1]).format('YYYY-MM-DD HH:mm:ss')] } console.log("getData",data) //根據(jù)查詢結(jié)果顯示不同信息內(nèi)容 info="數(shù)據(jù)生成失敗,請重新設(shè)置條件查詢" this.setState((state)=>({visible: true,modalInfo:info})); } }) }
console.log(window.btoa(values.carId))
這部分將是我們的加密參數(shù) 特別提醒 需要告知你的后端同學(xué)你的參數(shù)使用的是Base64加密了 不然他會生氣的~~
接下來我們介紹幾種稍微偏專業(yè)一些的知識,介于本人學(xué)生時代學(xué)習(xí)過密碼學(xué)的基礎(chǔ)
首先亮出第一種簡單的應(yīng)用
“對稱加密”: 看過抗日神劇的同學(xué)或者有所聽聞的都知道,摩斯碼的解密需要一個密碼本,密碼工作者需要這密碼本來進行解密。無論你傳輸?shù)亩嗝磸?fù)雜。規(guī)則的制定者始終都由這個密碼本的建立者掌握
這其實就是密碼學(xué)中基本的也是應(yīng)用最廣的可變性最大的‘對稱加密’
舉個例子我想傳輸?shù)氖敲魑?lsquo;3, 4,5’ 我的秘鑰規(guī)定是‘+2’ 那么規(guī)則下我實際傳輸?shù)拿芪?lsquo;1, 2,3’ 。當接收者知道我的秘鑰后我就可以知道其實他說的是‘3,4,5’
升級版本來了
1.替代密碼
密鑰字符(僅支持單個字符密鑰)的ASCII碼值范圍為[32,126](可見、可輸入字符),加密運算利用密鑰字符的ASCII碼值進行加密,產(chǎn)生的每個密文字符ASCII碼值也在[32,126]之內(nèi);解密運算利用密鑰字符的ASCII碼值進行解密,產(chǎn)生的每個明文字符ASCII碼值也在[32,126]之內(nèi);
#include<iostream> using namespace std; void jiami(); void jiemi(); char a[100]; char b[100]; char k; void jiami() { int i=0; cout<<"明文: "; cin>>a; cout<<"請輸入密鑰:"; cin>>k; while(a[i]!='\0') { b[i]=(char)((a[i]+k)>126?(a[i]+k)%126+31:(a[i]+k)); i++; } i=0; cout<<"密文為:"; while(b[i]!='\0') { cout<<b[i]; i++; } cout<<endl; } void jiemi() { int i=0; cout<<"請輸入密文: "; cin>>a; cout<<"請輸入密鑰: "; cin>>k; while(a[i]!='\0') { b[i]=(char)((a[i]-k)<32?126-abs((31-(a[i]-k))):(a[i]-k)); i++; } i=0; cout<<"明文為:"; while(b[i]!='\0') { cout<<b[i]; i++; } cout<<endl; } void main() { int choose; while(true) { cout<<"請選擇需要進行的操作種類:"<<endl; cout<<"1:加密 2:解密 3:退出 "<<endl; cin>>choose; if(choose==1) { jiami(); } else if(choose==2) { jiemi(); } else if(choose==3) { break; } else { cout<<"您輸入的序號不正確,請重新輸入"<<endl; } cout<<endl; } }
2.置換密碼
1)算法描述: (加密置換矩陣、逆置換矩陣不同)
#include<iostream> using namespace std; int jiamibox[6]={3,4,5,2,6,1}; //加密置換矩陣 int jiemibox[6]={6,4,1,2,3,5}; //逆置換矩陣 char in[5000]; //定義明文字符串變量 char out[5000]; //定義密文字符串變量 char ch; void jiami(); // 加密函數(shù) void jiemi(); //解密函數(shù) void jiami() { cout<<"輸入要加密的明文:"; cin>>in; for(int i=0;i<strlen(in)/6;i++) { for(int j=0;j<6;j++) { out[i*6+j]=in[i*6+(jiamibox[j]-1)]; } } char Out[5000]; for(int j=0;j<6;j++) { for(int i=0;i<strlen(in)/6;i++) { Out[i*6+j]=out[i*6+(jiamibox[j]-1)]; } } cout<<"加密后的密文為:"; for(int i=0;i<5000;i++) { if(in[i]!='\0') cout<<Out[i]; else break; } cout<<endl; } void jiemi() { cout<<"輸入要解密的密文:"; cin>>in; for(int i=0;i<strlen(in)/6;i++) { for(int j=0;j<6;j++) { out[i*6+j]=in[i*6+(jiemibox[j]-1)]; } } char Out[5000]; for(int j=0;j<6;j++) { for(int i=0;i<strlen(in)/6;i++) { Out[i*6+j]=out[i*6+(jiemibox[j]-1)]; } } cout<<"解密后的明文為:"; for(int i=0;i<5000;i++) { if(in[i]!='\0') cout<<Out[i]; else break; } cout<<endl; } void main() { int choose; while(true) { cout<<"1:加密 2:解密3:退出(輸入字符數(shù)必須是6的正整數(shù)倍)"<<endl; cout<<"請選擇需要進行的操作種類: "; cin>>choose; cout<<endl; if(choose==1) jiami(); elseif(choose==2) jiemi(); elseif(choose==3) break; else cout<<"您輸入的序號不正確,請重新輸入"; cout<<endl; } }
后兩種僅供提升參考,使用c++ 也可轉(zhuǎn)javaScript 推薦前兩種方案前端使用
到此這篇關(guān)于傳參安全處理window.btoa base64加密,線性對稱加密的文章就介紹到這了,更多相關(guān)window.btoa base64加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
修改源碼來解決el-select值不匹配導(dǎo)致回顯id的問題
el-select數(shù)據(jù)的回顯是根據(jù)id去匹配值的,最近項目出現(xiàn)了回顯id的情況,一查是沒有匹配數(shù)據(jù)的問題,于是就想怎么處理(針對單選的情況),本文小編給大家介紹了用修改源碼來解決el-select值不匹配導(dǎo)致回顯id的問題,需要的朋友可以參考下2024-09-09JavaScript+HTML5實現(xiàn)的日期比較功能示例
這篇文章主要介紹了JavaScript+HTML5實現(xiàn)的日期比較功能,涉及javascript結(jié)合HTML5針對日期的轉(zhuǎn)換與運算相關(guān)操作技巧,需要的朋友可以參考下2017-07-07undefined==null引發(fā)的兩者區(qū)別與聯(lián)系
undefined==null引發(fā)的兩者區(qū)別與聯(lián)系2007-12-12H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多
這篇文章主要為大家詳細介紹了H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07