亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

傳參安全處理window.btoa base64加密,線性對稱加密

 更新時間:2023年07月04日 00:01:34   作者:Eirice  
這篇文章主要介紹了傳參安全處理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)文章

  • 詳解如何探測小程序返回到webview頁面

    詳解如何探測小程序返回到webview頁面

    這篇文章主要介紹了詳解如何探測小程序返回到webview頁面,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript里 ==與===區(qū)別詳解

    JavaScript里 ==與===區(qū)別詳解

    這篇文章主要介紹了JavaScript里 ==與===區(qū)別詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • 修改源碼來解決el-select值不匹配導(dǎo)致回顯id的問題

    修改源碼來解決el-select值不匹配導(dǎo)致回顯id的問題

    el-select數(shù)據(jù)的回顯是根據(jù)id去匹配值的,最近項目出現(xiàn)了回顯id的情況,一查是沒有匹配數(shù)據(jù)的問題,于是就想怎么處理(針對單選的情況),本文小編給大家介紹了用修改源碼來解決el-select值不匹配導(dǎo)致回顯id的問題,需要的朋友可以參考下
    2024-09-09
  • GoJs的文本繪圖模板TextBlock使用實例

    GoJs的文本繪圖模板TextBlock使用實例

    這篇文章主要為大家介紹了GoJs的文本繪圖模板TextBlock使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 淺談es6中的元編程

    淺談es6中的元編程

    這篇文章主要介紹了淺談es6中的元編程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 微信小程序 頁面跳轉(zhuǎn)傳值實現(xiàn)代碼

    微信小程序 頁面跳轉(zhuǎn)傳值實現(xiàn)代碼

    這篇文章主要介紹了微信小程序 頁面跳轉(zhuǎn)傳值實現(xiàn)代碼的相關(guān)資料,這里分析實現(xiàn)的條件及實例代碼,需要的朋友可以參考下
    2017-07-07
  • JavaScript+HTML5實現(xiàn)的日期比較功能示例

    JavaScript+HTML5實現(xiàn)的日期比較功能示例

    這篇文章主要介紹了JavaScript+HTML5實現(xiàn)的日期比較功能,涉及javascript結(jié)合HTML5針對日期的轉(zhuǎn)換與運算相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • js本身的局限性 別讓javascript做太多事

    js本身的局限性 別讓javascript做太多事

    最近常有人在Q群里發(fā)問諸如"怎樣讓js操作文件"、"怎樣讓js實現(xiàn)多線程"等問題。
    2010-03-03
  • undefined==null引發(fā)的兩者區(qū)別與聯(lián)系

    undefined==null引發(fā)的兩者區(qū)別與聯(lián)系

    undefined==null引發(fā)的兩者區(qū)別與聯(lián)系
    2007-12-12
  • H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多

    H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多

    這篇文章主要為大家詳細介紹了H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論