рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди

рдЖрдЬрдХрд▓, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рддрдерд╛рдХрдерд┐рдд "рд╡реЗрдм-рдЙрдиреНрдореБрдЦ" рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдкрддрд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде, рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рд╕рд╡рд╛рд▓ рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢рд╛рд░реАрд░рд┐рдХ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪреБрднрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рд╕рдВрдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдирд┐рдлрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рддреАрд╕рд░рд╛, рд╣реИрдХрд░ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдЪреБрд░рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдпрд╛ рдПрдХ рдмреЗрдИрдорд╛рди рд╕рд░реНрд╡рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрд╕реЗ рдирд┐рдЬреА рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдХрд╛рд░реНрдп


рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореБрдЭреЗ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдорд┐рд▓рд╛ рдерд╛ред

рдпрд╣реА рд╣реИ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬреЛ рди рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдмрд▓реНрдХрд┐ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рдЪреЛрд░реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдмреЗрдХрд╛рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рддреАрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрдиреЛрдВ рдХреА рдкрд╕рдВрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рдЬрд╛рд╡рд╛-рдПрдкреНрд▓реЗрдЯ-рдЬрд╛рд╡рд╛-рд╕рд░реНрд╡рд▓реЗрдЯ рдмрдВрдбрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдореБрдЭреЗ рдПрдХ рдФрд░ рд░рд╛рд╕реНрддрд╛ рддрд▓рд╛рд╢рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдкреНрд▓реЗрдЯ рдФрд░ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдереАрдВред
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ HTML5 рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ "XmlHttpRequest Level 2" рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдмрд╕ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдХрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереАред

рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛:


рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрддреА рд╣реИред
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛:


рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛:


рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХреЛрдб:
<script type="text/javascript"> /** *        * XMLHttpRequest level 2 */ function upload(blobOrFile) { var xhr = new XMLHttpRequest(); //    POST,  URL  true=  xhr.open('POST', '/File/UploadFile/', true); //   -   xhr.responseType = "arraybuffer"; //    xhr.setRequestHeader("Content-type", "multipart/form-data"); xhr.onload = function(e) { // ... }; xhr.send(blobOrFile); //   } //      document.querySelector('input[type="file"]').addEventListener('change', function(e) { var file = this.files[0]; //      var reader = new FileReader(); reader.onloadend = function(e) { var result = this.result; //    var arr = new Int8Array(result); var i; //   var newResult = new ArrayBuffer(arr.byteLength); var newRes = new Int8Array(newResult); var keyForEncrypt = $('#keyForEncrypt').val(); for(i = 0; i < arr.byteLength; i++) { //    newRes[i] = arr[i] + parseInt(keyForEncrypt, 10); } //   upload(newRes.buffer); }; //      //   Chrome 11.0.696.68,    FireFox 4.0.1 reader.readAsArrayBuffer(file); }, false); /*** *         , *        Java  *      */ function download() { var xhr = new XMLHttpRequest(); xhr.open('POST', '/File/DownloadFile/', false); xhr.responseType = 'arraybuffer'; xhr.onload = function(e) { var arr = new Int8Array(this.response); // this.response == arr.buffer //     upload(arr.buffer); var result = new Array(arr.byteLength); var keyForDecrypt = $('#keyForDecrypt').val(); for(var i = 0; i < arr.byteLength; i++) { result[i] = arr[i] - parseInt(keyForDecrypt, 10); } saveFileByApplet(result); }; xhr.send(); } function saveFileByApplet(data) { //     var cryptApplet = document.CryptApplet; cryptApplet.saveFile(data); } $(document).ready(function() { $('#saveFileButton').click(function() { download(); }); }); </script> 


рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб:
 <script type="text/javascript"> var selectedFile = null; //     document.querySelector('input[type="file"]').addEventListener('change', function(e) { selectedFile = this.files[0];//      }, false); $(document).ready(function() { $('#uploadPictureButton').click(function() { //    -  if(selectedFile != null) { var reader = new FileReader(); reader.onload = function(e) { //    var result = this.result; //   Base64 var base64Result = Base64.encode(result); //   XOR   var keyForEncrypt = $('#keyForEncrypt').val(); var encryptedData = XOREncrypt(base64Result, keyForEncrypt); //   uploadPicture(encryptedData); }; //      reader.readAsBinaryString(selectedFile); } }); $('#downloadPictureButton').click(function() { downloadPicture(); }); }); /** *         5   */ function buildExtension() { if(selectedFile != null) { var ext = ""; var fullName = selectedFile.name; for(var i = fullName.length - 1; i >= 0; i--) { if(fullName[i] == '.') break; else ext += fullName[i]; } ext = ext.split('').reverse().join(''); if(ext.length < 5) { for(var i = 0; i <= 5-ext.length; i++) { ext += " "; } } return ext; } } /** *        * XMLHttpRequest level 2 */ function uploadPicture(picture) { var xhr = new XMLHttpRequest(); //    POST,  URL  true=  xhr.open('POST', '/Picture/UploadPicture/', true); xhr.onload = function(e) { // ... }; var sentData = "jpg " + picture; //   xhr.send(sentData); } /*** *      ,  XOR,  , *        SRC  IMG */ function downloadPicture() { var xhr = new XMLHttpRequest(); xhr.open('POST', '/Picture/DownloadPicture/', true); xhr.onload = function(e) { //  -  Base64,  XOR var result = this.response; //  5  -  var ext = rtrim(result.substr(0, 5)); //   Base64 var base64Data = result.substr(5); var keyForDecrypt = $('#keyForDecrypt').val(); var decryptedData = XORDecrypt(base64Data, keyForDecrypt); //  MIME      var mime = ""; switch (ext) { case "jpeg" : case "jpg" : case "jpe" : mime = "image/jpeg"; break; case "gif" : mime = "image/gif"; break; case "png" : mime = "image/png"; break; default: mime = "image/jpeg"; break; } $('#pict').attr('src', "data:" + mime + ";base64," + decryptedData); }; xhr.send(); } /** *  PHP- rtrim -    */ function rtrim ( str, charlist ) { charlist = !charlist ? ' \\s\u00A0' : (charlist + '').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\\$1'); var re = new RegExp('[' + charlist + ']+$', 'g'); return (str + '').replace(re, ''); } </script> 


рдореИрдВрдиреЗ рдпрд╣рд╛рдБ XOREncrypt, XORDecrypt рдФрд░ Base64 рдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдВрдмреА рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕рдВрд▓рдЧреНрди рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдпрд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдПрдкреНрд▓реЗрдЯ рдХреЛрдбред
 package ExtPackage; import java.applet.*; import java.io.*; import java.io.FileOutputStream; import javax.swing.JFileChooser; import javax.swing.*; public class CryptApplet extends Applet{ public void saveFile(byte[] data) throws FileNotFoundException, IOException { //     final JFileChooser fc = new JFileChooser(); fc.showSaveDialog(CryptApplet.this); //    ,   File file = fc.getSelectedFile(); OutputStream out = new FileOutputStream(file); //      out.write(data); out.flush(); out.close(); } } 


рд╕рд╛рд░рд╛рдВрд╢


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдордп рдмрдЪрд╛рдПрдВрдЧреЗ, рдЬреЛ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд▓рдЧреНрди рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИред

Source: https://habr.com/ru/post/In130085/


All Articles