最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年07月04日 00:01:34   作者:Eirice  
這篇文章主要介紹了傳參安全處理window.btoa base64加密,線性對(duì)稱加密,需要的朋友可以參考下

那么如何保證自己前端簡(jiǎn)單又便捷的生成加密參數(shù)呢

1.我們可以使用window.btoa() window對(duì)象自帶的一個(gè)base64加密規(guī)則實(shí)現(xiàn) 前提參數(shù)需要時(shí)獨(dú)立的string。 解密方式 是將加密后的文本使用window.atob(Str) 注意Str: 必需是一個(gè)通過(guò) 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ù)生成失敗,請(qǐng)重新設(shè)置條件查詢"
           this.setState((state)=>({visible: true,modalInfo:info}));
       }
      })
    }

console.log(window.btoa(values.carId))

這部分將是我們的加密參數(shù) 特別提醒 需要告知你的后端同學(xué)你的參數(shù)使用的是Base64加密了 不然他會(huì)生氣的~~
接下來(lái)我們介紹幾種稍微偏專業(yè)一些的知識(shí),介于本人學(xué)生時(shí)代學(xué)習(xí)過(guò)密碼學(xué)的基礎(chǔ)

首先亮出第一種簡(jiǎn)單的應(yīng)用

“對(duì)稱加密”: 看過(guò)抗日神劇的同學(xué)或者有所聽(tīng)聞的都知道,摩斯碼的解密需要一個(gè)密碼本,密碼工作者需要這密碼本來(lái)進(jìn)行解密。無(wú)論你傳輸?shù)亩嗝磸?fù)雜。規(guī)則的制定者始終都由這個(gè)密碼本的建立者掌握
這其實(shí)就是密碼學(xué)中基本的也是應(yīng)用最廣的可變性最大的‘對(duì)稱加密’
舉個(gè)例子我想傳輸?shù)氖敲魑?lsquo;3, 4,5’ 我的秘鑰規(guī)定是‘+2’ 那么規(guī)則下我實(shí)際傳輸?shù)拿芪?lsquo;1, 2,3’ 。當(dāng)接收者知道我的秘鑰后我就可以知道其實(shí)他說(shuō)的是‘3,4,5’

升級(jí)版本來(lái)了

1.替代密碼

密鑰字符(僅支持單個(gè)字符密鑰)的ASCII碼值范圍為[32,126](可見(jiàn)、可輸入字符),加密運(yùn)算利用密鑰字符的ASCII碼值進(jìn)行加密,產(chǎn)生的每個(gè)密文字符ASCII碼值也在[32,126]之內(nèi);解密運(yùn)算利用密鑰字符的ASCII碼值進(jìn)行解密,產(chǎn)生的每個(gè)明文字符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<<"請(qǐng)輸入密鑰:";
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<<"請(qǐng)輸入密文: ";
cin>>a;
cout<<"請(qǐng)輸入密鑰: ";
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<<"請(qǐng)選擇需要進(jìn)行的操作種類:"<<endl;
cout<<"1:加密  2:解密  3:退出 "<<endl;
cin>>choose;
if(choose==1)
{
jiami();
}
else if(choose==2)
{
jiemi();
}
else if(choose==3)
{
break;
}
else
{ 
cout<<"您輸入的序號(hào)不正確,請(qǐng)重新輸入"<<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<<"請(qǐng)選擇需要進(jìn)行的操作種類: ";
cin>>choose;
cout<<endl;
if(choose==1)
jiami();
elseif(choose==2)
jiemi();
elseif(choose==3)
break;
else
cout<<"您輸入的序號(hào)不正確,請(qǐng)重新輸入";
cout<<endl;
}
}

后兩種僅供提升參考,使用c++ 也可轉(zhuǎn)javaScript 推薦前兩種方案前端使用

到此這篇關(guān)于傳參安全處理window.btoa base64加密,線性對(duì)稱加密的文章就介紹到這了,更多相關(guān)window.btoa base64加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • img標(biāo)簽中onerror用法

    img標(biāo)簽中onerror用法

    可是這會(huì)引起再因網(wǎng)絡(luò)原因或其他原因使圖片不能正常加載的話 這樣就是再次調(diào)用onerror,基于微軟的一套核心的瀏覽器就會(huì)認(rèn)為這是死循環(huán)
    2009-08-08
  • uni-app如何實(shí)現(xiàn)增量更新功能

    uni-app如何實(shí)現(xiàn)增量更新功能

    這篇文章主要介紹了uni-app如何實(shí)現(xiàn)增量更新功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • ESLint的簡(jiǎn)單使用方法(js,ts,vue)

    ESLint的簡(jiǎn)單使用方法(js,ts,vue)

    ESLint是一個(gè)用于統(tǒng)一團(tuán)隊(duì)編碼規(guī)范、減少代碼錯(cuò)誤的工具,它可以手動(dòng)安裝并配置,支持JavaScript、TypeScript和Vue.js等語(yǔ)言,文章詳細(xì)介紹了如何手動(dòng)下載和配置ESLint,需要的朋友可以參考下
    2025-01-01
  • js實(shí)現(xiàn)開(kāi)關(guān)燈效果

    js實(shí)現(xiàn)開(kāi)關(guān)燈效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)開(kāi)關(guān)燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JS?解決Cannot?set?properties?of?undefined的問(wèn)題

    JS?解決Cannot?set?properties?of?undefined的問(wèn)題

    遇到這樣問(wèn)題當(dāng)前的是當(dāng)前對(duì)象或者數(shù)組是undefined,但是卻用來(lái)引用屬性或者索引,遇到這樣的問(wèn)題如何解決呢,下面通過(guò)本文給大家介紹JS?如何解決Cannot?set?properties?of?undefined,需要的朋友可以參考下
    2024-01-01
  • JavaScript作用域鏈?zhǔn)褂媒榻B

    JavaScript作用域鏈?zhǔn)褂媒榻B

    作用域就是變量和函數(shù)的可訪問(wèn)范圍,控制著變量和函數(shù)的可見(jiàn)性與生命周期,在JavaScript中變量的作用域有全局作用域和局部作用域
    2013-08-08
  • JavaScript中的各種寬高屬性的實(shí)現(xiàn)

    JavaScript中的各種寬高屬性的實(shí)現(xiàn)

    這篇文章主要介紹了JavaScript中的各種寬高屬性的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Javascript的表單驗(yàn)證-揭開(kāi)正則表達(dá)式的面紗

    Javascript的表單驗(yàn)證-揭開(kāi)正則表達(dá)式的面紗

    Javascript的表單驗(yàn)證-揭開(kāi)正則表達(dá)式的面紗在本文重點(diǎn)介紹,感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • 前端獲取IP地址的方法總結(jié)

    前端獲取IP地址的方法總結(jié)

    這篇文章主要介紹了前端獲取IP地址的四種方法:Vite配置、WebRTC、internal-ip插件及第三方API,并說(shuō)明了各方法在不同環(huán)境下的適用性與限制,通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • JavaScript實(shí)現(xiàn)涂鴉筆功能

    JavaScript實(shí)現(xiàn)涂鴉筆功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)涂鴉筆功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

潜江市| 徐水县| 石泉县| 瑞昌市| 濉溪县| 兴隆县| 永城市| 常山县| 环江| 古蔺县| 武城县| 浪卡子县| 南平市| 中西区| 漳浦县| 永丰县| 石棉县| 顺义区| 偏关县| 盘锦市| 崇文区| 西峡县| 宁化县| 中山市| 安化县| 伊春市| 吕梁市| 贞丰县| 邵武市| 延寿县| 长兴县| 定边县| 桐柏县| 上饶县| 河东区| 徐闻县| 肇源县| 且末县| 赣榆县| 泽普县| 安丘市|