javascripturlアドレス64ビットの暗号化と復号化はIEのさまざまな高バージョンと低バージョンと互換性があります

フロントエンドパラメータを渡すときに暗号化と復号化が必要であり、IEのすべての高バージョンと低バージョンと互換性がある必要がありますデフォルトバージョンはIE9とIE9以降です。ブラウザには実際にはwindow.btoa暗号化とwindow.atob復号化が付属していますメソッド、およびIEの低バージョンを検討してください。BASE64暗号化および復号化メソッドを手動で定義する必要があります。コードを直接アップロードしてください。



//针对IE8以及以下版本需要手动定义Base64加密解密方法
var Base64={
    
    _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){
    
    var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){
    
    n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){
    
    u=a=64}else if(isNaN(i)){
    
    a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){
    
    var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f<e.length){
    
    s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){
    
    t=t+String.fromCharCode(r)}if(a!=64){
    
    t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){
    
    e=e.replace(/\r\n/g,"n");var t="";for(var n=0;n<e.length;n++){
    
    var r=e.charCodeAt(n);if(r<128){
    
    t+=String.fromCharCode(r)}else if(r>127&&r<2048){
    
    t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{
    
    t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){
    
    var t="";var n=0;var r=c1=c2=0;while(n<e.length){
    
    r=e.charCodeAt(n);if(r<128){
    
    t+=String.fromCharCode(r);n++}else if(r>191&&r<224){
    
    c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{
    
    c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}

var target = 'http://121.42.104.101/fgd/add.html?depAccess=inDepId&departmentUpdate=1&jituanUpdate=0&updateDetailBtn=1&taskId=1677647&billId=f9aa7a74738f03e201738f57779f014c&token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..oXE1JMgJu2uA0LhcKOEfhQ.pzm9al4mgGAoQQ-G6HoifzgwcStmVcgmfvEH_9pJCycdMQeQUXv_gbgbhRc930ysZLK7R0vsgzgpQHgaj4EDG4Dy3WvOq91r7T5fXFkJeqglP9qwmwVb3oVdhzZ55nbd.8kikdaMssyg4EVAthDEcjw';
//加密
var enCodeStr2 = window.btoa?btoa(target):Base64.encode(target);
console.info(enCodeStr2);
//解密
var deCodeStr2 = window.atob?atob(enCodeStr2):Base64.decode(enCodeStr2);
console.info(deCodeStr2);

上記のコードは、プロジェクトチームのシニアフロントエンドアーキテクトによって作成されたコードであり、強力な互換性と参照があります。ハハ、私はバックエンドエンジニアであり、フロントエンドのことはめったにありませんが、このような優れたコードは並べ替える必要がありますみんなを助けてくれることを願っています!

おすすめ

転載: blog.csdn.net/wujian_csdn_csdn/article/details/107632519