暗号化方法を一目見ただけで、独自のアルゴリズムを作成することにしました。 アルゴリズムの本質を減らして、個々の文字がキーと混合された一意の値に混合され、これらの文字を混合する値が一意であり、特定のパスワードまたはキーから形成されるようにすることが決定されました。 El Gamal暗号、PunycodeおよびBase64変換方法は、まさにそのようなアルゴリズムを記述するための創造的なアイデアとして役立ちました。 私はノーベル賞を主張しませんが、それでも自分の創造物を共有することに決めました...
passCode-パスワード、キー。 ユーザーはこのパラメーターを自分で設定するため、非常に簡単なため、MD5でさらにコーディングします。
Incode-エンコードされた文字列
function txtencode(Incode, passCode) { // , , var b52 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; // var maxPC = ifPC = 0; // maxPC. for(var i=0; i<passCode.length; i++) maxPC += passCode.charCodeAt(i); // maxPCmod , // maxPC , , maxPCmod , 0. maxPCmod = maxPC; // . . var rexcode = ""; // : passCode.charCodeAt(numPC) // var numPC = 0; // for(var i=0; i<Incode.length; i++) { // , if(numPC == passCode.length) numPC = 0; // maxPCmod , . if(maxPCmod < 1) maxPCmod = maxPC+ifPC; // maxPCmod, , . // maxPCmod // maxPCmod, maxPC ifPC , - ifPC += maxPCmod % passCode.charCodeAt(numPC); // , var iscode = maxPCmod % passCode.charCodeAt(numPC); // , var nCode = (Incode.charCodeAt(i)+iscode); // maxPCmod maxPCmod -= passCode.charCodeAt(numPC); // numPC++; // . // 52 , . // 22 22*52+2, . rexcode += parseInt(nCode / 52) + b52.charAt(parseInt(nCode % 52)); } // return rexcode; }
デコード機能は以前の機能とほとんど同じですが、いくつかの例外があります
function txtdecode(Incode, passCode) { var b52 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var maxPC = 0; for(var i=0; i<passCode.length; i++) maxPC += passCode.charCodeAt(i); maxPCmod = maxPC; ifPC = 0; // , var Incode = Incode.match(/\d+\w/g); var rexcode = ""; var numPC = 0; for(var i=0; i<Incode.length; i++) { if(numPC == passCode.length) numPC = 0; if(maxPCmod < 1) maxPCmod = maxPC+ifPC; ifPC += maxPCmod % passCode.charCodeAt(numPC); var iscode = maxPCmod % passCode.charCodeAt(numPC); // , var nCode = (parseInt(Incode[i])*52)+parseInt(b52.indexOf(Incode[i].substr(-1))); maxPCmod -= passCode.charCodeAt(numPC); numPC++; // , rexcode += String.fromCharCode(nCode-iscode); } // return rexcode. // , , . return rexcode.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/ /g, " ").replace(/\r\n|\r|\n/g,"<br />").replace(/(https?\:\/\/|www\.)([--\d\w#!:.?+=&%@!\-\/]+)/gi, function(url) { return '<a target="_blank" href="'+ (( url.match('^https?:\/\/') )?url:'http://' + url) +'">'+ url +'</a>'; }); }
結果は、サイトavtodot.ru 、 baby-all-pro.ruおよびbuilding-repairs.ruで確認できます。
データ暗号化の法的側面