私の暗号化アルゴリズム

少し前まで、ユーザー通信をエンコードするタスクに直面していました。 タスクの目標は、既にエンコードされた文字列をユーザーAからユーザーBに転送することでした。文字列は、両方に既知のキーを使用してエンコードおよびデコードされます。 ユーザーAからのメッセージがサーバーにユーザーBに送信され、ユーザーBがそれをピックアップすることが理解されます。 第三者がメッセージを傍受するか、保存されているサーバーにアクセスしてメッセージを受信した場合にデータを受信しないようにするため、関数をJavaScriptで整理することを決定しました。これにより、ユーザーはブラウザーウィンドウからエンコードされた文字列を直接送信できます。



暗号化方法を一目見ただけで、独自のアルゴリズムを作成することにしました。 アルゴリズムの本質を減らして、個々の文字がキーと混合された一意の値に混合され、これらの文字を混合する値が一意であり、特定のパスワードまたはキーから形成されるようにすることが決定されました。 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.rubaby-all-pro.ruおよびbuilding-repairs.ru確認できます。



データ暗号化の法的側面



All Articles