Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Шифрование

Шифрование
Я
   antihacker
 
30.01.18 - 06:36
Всем привет !
У кого есть опыт по шифрованию ?

У меня на сайте шифрование пароля идет так

function my_encrypt1($data, $key)
{
    // Remove the base64 encoding from our key
    $encryption_key = base64_decode("123456");
    // Generate an initialization vector
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    // Encrypt the data using AES 256 encryption in CBC mode using our encryption key and initialization vector.
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, 0, $iv);
    // The $iv is just as important as the key for decrypting, so save it with our encrypted data using a unique separator (::)
    return base64_encode($encrypted . '::' . $iv);
}
?>


Из 1С один стараюсь подключиться на сайт

    HTTPЗапрос.УстановитьТелоИзСтроки("username="+Объект.Пользователь+"&parol="+Base64Строка(Base64Значение(Объект.Пароль))+"&param=" + strJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);    
    
    ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt");
    
    Результат =  СоединениеHTTP.ОтправитьДляОбработки(HTTPЗапрос,ИмяФайлаОтвета);
    
    ДвоичныеДанные = Base64Значение(СокрЛП(Объект.Пароль));
    сообщить(ДвоичныеДанные);
    сообщить(Base64Строка(ДвоичныеДанные));

Но сообщить(Base64Строка(ДвоичныеДанные)) и сообщить(ДвоичныеДанные) возвращает пустое значение. Ди как со стороны 1С использовтаь ключ для дешифровки ? Тогда и смысл пропадает, когда на стороне 1С видят ключ. МОжет есть способ как то получить ключ из сайта безопасноым путем и исопльзовать ?
   vicof
 
1 - 30.01.18 - 09:46
"&parol="+Base64Строка(Base64Значение(Объект.Пароль))"
Слюшай, да, такая парол прыдумал, очен сложная.
   asady
 
2 - 30.01.18 - 09:49
(0) храни не пароль а его хэш и проблем не будет
   Сияющий в темноте
 
3 - 30.01.18 - 10:04
Если мы храним хэш пароля,то или его нужно вычислять на клиенте и передавать чере функцию кеширования или устанавливать защищенное соединение и передавать пароль в открытом виде через него,но последнее,как было показано,не безопасно,так как при обработке на сервере в памяти будет хранится пароль в отрытом виде причем в буфере передачи после тлс декодирвания
   Рэйв
 
4 - 30.01.18 - 10:08
(0)могу поделиться функцией MD5 кодирования для 1С. На сервере только хеши будешь сверять.
   antihacker
 
5 - 30.01.18 - 10:21
Ребята все о чем вы гвоврите организовано. Проблема в другом. Мне нужно передать пароль в зашифрованном виде, так что бы на строне сайта можно было как то потом использовать для авторизации. Из 1С надо.
   Йохохо
 
6 - 30.01.18 - 10:27
(5) посоли, хттпс же есть уже?
   antihacker
 
7 - 30.01.18 - 10:47
Да есть. И мне туда нужно отправить пароль в шифрованном виде. Там в мускуле пароль храниться в формате md5
   Рэйв
 
8 - 30.01.18 - 11:03
(5)Я же тебе предлагаю фукцию для шифрования в 1С. А ты ноль внимания:-)
   antihacker
 
9 - 30.01.18 - 11:13
Буду только рад )
   Рэйв
 
10 - 30.01.18 - 11:15
не помню где слямзил, но функция рабочая, проверял.
//-----------

Функция ___обMD5(КодируемаяСтрока)

    

    ЗначениеВозврата = Истина;

    Попытка

        //http://pajhome.org.uk/crypt/md5/index.html



         
        ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl"); 
        ScrptCtrl.Language = "JScript"; 
        ScrptCtrl.AddCode(" 
        |/* 
        | * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message 

 

      | * Digest Algorithm, as defined in RFC 1321.
      | * Version 2.1 Copyright © Paul Johnston 1999 - 2002.

        | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 
        | * Distributed under the BSD License 
 

       | * See http://pajhome.org.uk/crypt/md5   http://pajhome.org.uk/crypt/md5 for more info.

       | */
       |

        |/* 
 

       | * Configurable variables. You may need to tweak these to be compatible with
       | * the server-side, but the defaults work in most cases.

        | */ 
        |var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */ 

 

      |var b64pad  = """"; /* base-64 pad character. ""="" for strict RFC compliance   */

       |var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
       |

        |/* 
        | * These are the functions you'll usually want to call 
        | * They take string arguments and return either hex or base-64 encoded strings 
        | */ 
        |function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} 
        |function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} 
        |function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} 
        |function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } 
        |function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } 
        |function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } 
        | 
        |/* 
        | * Perform a simple self-test to see if the VM is working 
        | */ 
        |function md5_vm_test() 
        |{ 
        |  return hex_md5(""abc"") == ""900150983cd24fb0d6963f7d28e17f72""; 
        |} 
        |
        |/* 
        | * Calculate the MD5 of an array of little-endian words, and a bit length 
        | */ 
        |function core_md5(x, len) 
        |{ 
        |  /* append padding */ 
        |  x[len >> 5] |= 0x80 << ((len) % 32); 
        |  x[(((len + 64) >>> 9) << 4) + 14] = len; 
        | 
        |  var a =  1732584193; 
        |  var b = -271733879; 
        |  var c = -1732584194; 
        |  var d =  271733878; 
        | 
        |  for(var i = 0; i < x.length; i += 16) 
        |  { 
        |    var olda = a; 
        |    var oldb = b; 
        |    var oldc = c; 
        |    var oldd = d; 
        | 
        |    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); 
        |    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); 
        |    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819); 
        |    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); 
        |    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); 
        |    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426); 
        |    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); 
        |    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); 
        |    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416); 
        |    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); 
        |    c = md5_ff(c, d, a, b, x[i+10], 17, -42063); 
        |    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); 
        |    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682); 
        |    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); 
        |    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); 
        |    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329); 
        | 
        |    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); 
        |    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); 
        |    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713); 
        |    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); 
        |    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); 
        |    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083); 
        |    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); 
        |    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); 
        |    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438); 
        |    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); 
        |    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); 
        |    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501); 
        |    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); 
        |    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); 
        |    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473); 
        |    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); 
        | 
        |    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); 
        |    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); 
        |    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562); 
        |    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); 
        |    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); 
        |    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353); 
        |    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); 
        |    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); 
        |    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174); 
        |    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); 
        |    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); 
        |    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189); 
        |    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); 
        |    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); 
        |    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520); 
        |    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); 
        | 
        |    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); 
        |    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415); 
        |    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); 
        |    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); 
        |    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571); 
        |    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); 
        |    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); 
        |    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); 
        |    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359); 
        |    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); 
        |    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); 
        |    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649); 
        |    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); 
        |    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); 
        |    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259); 
        |    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); 
        | 
        |    a = safe_add(a, olda); 
        |    b = safe_add(b, oldb); 
        |    c = safe_add(c, oldc); 
        |    d = safe_add(d, oldd); 
        |  } 
        |  return Array(a, b, c, d); 
        | 


       |}
       |
       |/*
       | * These functions implement the four basic operations the algorithm uses.


        | */ 
        |function md5_cmn(q, a, b, x, s, t) 
        |{ 
        |  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); 
        |} 
        |function md5_ff(a, b, c, d, x, s, t) 
        |{ 
        |  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); 
        |} 
        |function md5_gg(a, b, c, d, x, s, t) 
        |{ 
        |  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); 
        |} 
        |function md5_hh(a, b, c, d, x, s, t) 
        |{ 
        |  return md5_cmn(b ^ c ^ d, a, b, x, s, t); 
        |} 
        |function md5_ii(a, b, c, d, x, s, t) 
        |{ 
        |  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); 
        |} 
        | 
        |/* 
        | * Calculate the HMAC-MD5, of a key and some data 
        | */ 
        |function core_hmac_md5(key, data) 
        |{ 
        |  var bkey = str2binl(key); 
        |  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); 
        | 
        |  var ipad = Array(16), opad = Array(16); 
        |  for(var i = 0; i < 16; i++) 
        |  { 
        |    ipad[i] = bkey[i] ^ 0x36363636; 
        |    opad[i] = bkey[i] ^ 0x5C5C5C5C; 
        |  } 
        | 
        |  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); 
        |  return core_md5(opad.concat(hash), 512 + 128); 
        |} 
        | 
        |/* 
        | * Add integers, wrapping at 2^32. This uses 16-bit operations internally 
        | * to work around bugs in some JS interpreters. 
        | */ 
        |function safe_add(x, y) 
        |{ 
        |  var lsw = (x & 0xFFFF) + (y & 0xFFFF); 
        |  var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 
        |  return (msw << 16) | (lsw & 0xFFFF); 
        |} 
        | 
        |/* 
        | * Bitwise rotate a 32-bit number to the left. 
        | */ 
        |function bit_rol(num, cnt) 
        |{ 
        |  return (num << cnt) | (num >>> (32 - cnt)); 
        |} 


       |

        |/* 
        | * Convert a string to an array of little-endian words 
 

       | * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.

        | */ 
        |function str2binl(str) 
        |{ 
        |  var bin = Array(); 
        |  var mask = (1 << chrsz) - 1; 
        |  for(var i = 0; i < str.length * chrsz; i += chrsz) 
        |    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); 
        |  return bin; 
        |} 
        | 
        |/* 
        | * Convert an array of little-endian words to a string 
        | */ 
        |function binl2str(bin) 
        |{ 
        |  var str = """"; 
        |  var mask = (1 << chrsz) - 1; 
        |  for(var i = 0; i < bin.length * 32; i += chrsz) 
        |    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); 
        |  return str; 
        |} 
        |


       |/*
       | * Convert an array of little-endian words to a hex string.


        | */ 
        |function binl2hex(binarray) 
        |{ 
        |  var hex_tab = hexcase ? ""0123456789ABCDEF"" : ""0123456789abcdef""; 
        |  var str = """"; 
        |  for(var i = 0; i < binarray.length * 4; i++) 
        |  { 
        |    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + 
        |           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF); 
        |  } 
        |  return str; 
        |} 
        | 
        |/* 
        | * Convert an array of little-endian words to a base-64 string 
        | */ 
        |function binl2b64(binarray) 
        |{ 
        |  var tab = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/""; 
        |  var str = """"; 
        |  for(var i = 0; i < binarray.length * 4; i += 3) 
        |  { 
        |    var trip

        |let = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16) 
        |                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) 
        |                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); 
        |    for(var j = 0; j < 4; j++) 
        |    { 
        |      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 
        |      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 
        |    } 
        |  } 
        |  return str; 
        |} 
        |"); 
         
        ЗначениеВозврата = ""; 
        ЗначениеВозврата = ScrptCtrl.Run("hex_md5", КодируемаяСтрока); 
    Исключение 
        ЗначениеВозврата = Неопределено; 
        Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное); 
    КонецПопытки; 
    ScrptCtrl = ""; 
     
    Возврат ЗначениеВозврата; 
     
КонецФункци// MD5()
   Йохохо
 
11 - 30.01.18 - 11:16
(8) в платформе же есть мд5, зачем ей делиться?
(7) в чем проблема то? соль добавь, сделай мд5, передай, сервер делает то же самое и сравнивает. Непонятно зачем шифровать внутри хттпс? И мне непонятно
   Рэйв
 
12 - 30.01.18 - 11:16
оно частично под плюсы Code звернуло. не забудь развернуть перед копипастом:-)
   vde69
 
13 - 30.01.18 - 11:19
(7) md5 - это не совсем один формат, это некое семейство разных алгоритмов имеющих в своей основе одну и туже функцию, но при этом они разные!!!

что-бы все совпало нужно и на клиенте и на сервере использовать одинаковые версии md5
   Рэйв
 
14 - 30.01.18 - 11:19
(11)А я и не знал что оно есть в платформе:-)  Так то не сильно надо было
   antihacker
 
15 - 30.01.18 - 11:22
У меня вот так

в 1С
&НаСервере
Функция ВернутьХэшСтроки(вхстрока)
    
    оMD5 = Новый COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
    оEnc = Новый COMОбъект("System.Text.UTF8Encoding");
    оStr = Новый COMОбъект("System.Text.StringBuilder");

    // переводим в байтовый массив 

    Массив = оEnc.GetBytes_4(вхстрока);
    
    // MD5

    Массив = оMD5.ComputeHash_2(Массив);
    
    // переведем обратно из байтового массива в строку

    КолЭлементовМассива = Массив.GetLength();
    Для Ит = 0 ПО КолЭлементовМассива - 1 Цикл 
    
        оStr.AppendFormat("{0:x02}", Массив.GetValue(Ит));
    
    КонецЦикла;
    
    оMD5 = NULL;
    оEnc = NULL;
    
    Возврат оStr.ToString();
    //ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);

    //ОбъектХеш.Добавить(вхстрока);

    //Возврат ОбъектХеш.ХешСумма;

 КонецФункции

А вот  так в ПХП

function EncryptPasw($inPasw)
{
    $Pasw_to_encrypt = $inPasw;
    return md5($Pasw_to_encrypt);
}

Но хотелось из 1С сразу в зашифрованном виде передать. Но есть проблема. На стороне ПХП к паролю прибавляеться ключи только потом шифруеться. По этому , то что отправляет 1С не подходит без ключа. Как исправить этот момент.
   antihacker
 
16 - 30.01.18 - 11:24
Наверное только двойное шифрование. Другого не вижу.
   Йохохо
 
17 - 30.01.18 - 11:36
(16) пхп не хранит пароль в открытом виде? пхп берет пароль, шифрует ключом, делает мд5 и записывает базу? А ты мешаешь ему сделать тоже самое для сравнения при авторизации передавая вместо пароля мд5 от пароля? Просто дай пхп по башке, зачем ты животинку мучаешь
   zva
 
18 - 30.01.18 - 11:40
   antihacker
 
19 - 30.01.18 - 11:48
Наверное я на албанском пишу. Да знаю я как шифровать и по Base64. Так дело не в этом. На стороне ПХП используеться ключ. И за этого он не будет совподать с 1С. А эти же ключи если использовать из 1С,то теряет смысл в использовании ключа.
   vde69
 
20 - 30.01.18 - 11:52
(19) на сайте генеришь ПАРУ ключей (открытый и секретный)

открытый шлешь в 1с

открытым шифруешь (расшифровать открытым нельзя)

шлешь на сервер

на сервере расшифровываешь секретным....
   antihacker
 
21 - 30.01.18 - 12:18
Лучше двойное шифрование
   antihacker
 
22 - 30.01.18 - 12:32
Что за пара ключей ? Какая техналогия ?
   MM
 
23 - 30.01.18 - 12:36
(20) Всё это хорошо и красиво. Вот только, как практически на 1С это реализовать, особенно не привлекая внешние компоненты.
МенеджерКриптографии штука не тривиальная и влезающая в дебри системы, если её использовать предлагается, то к ней нужно описание как разработчику, так и администратору.
   vde69
 
24 - 30.01.18 - 12:37
(22) например PGP, но такого полно...
   vde69
 
25 - 30.01.18 - 12:46
(23) вот пример отправки письма с PGP вложением с указанной технолией

Если не Отказ Тогда
    мОтправитель = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись().АдресЭлектроннойПочты;
    Для каждого эл из Версия.Получатели Цикл
        ИмяФайлаGPG = ПолучитьИмяВременногоФайла("gpg"); 
        ФайлGPGНаДиске = Новый Файл(ИмяФайлаGPG);
        ИмяФайлаGPG = ФайлGPGНаДиске.Путь + ИмяФайла + "(" + ФайлGPGНаДиске.ИмяБезРасширения + ").pgp";
        
        НоваяСтрока = мТЗ.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока,эл);
        
        Если ТипЗнч(эл.Получатель) = Тип("СправочникСсылка.Пользователи") Тогда
            Если эл.Получатель.ОповещатьПоEmail Тогда
                НоваяСтрока.Почта = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(эл.Получатель, Справочники.ВидыКонтактнойИнформации.EmailПользователя);
            Иначе
                НоваяСтрока.Почта = "";
            КонецЕсли;
        Иначе
            НоваяСтрока.Почта = СокрЛП(эл.Получатель);
        КонецЕсли;
        
        Попытка   
            мРезультат = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(НоваяСтрока.Почта);
            Если мРезультат.Количество() > 1 Тогда
                Отказ = Истина;
                мОписаниеОшибки = мОписаниеОшибки + "
                        |Допускается ввод только одного адреса электронной почты";
            КонецЕсли;
        Исключение
            Отказ = Истина;
            мОписаниеОшибки = мОписаниеОшибки + "
                    |"+КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
        КонецПопытки;
        
        Если не Отказ Тогда
            // шифруем файл ключем который ищется по полю "параметр"

            СтрокаЗапуска = """C:\Program Files (x86)\GNU\GnuPG\gpg2.exe"" --batch --output """ + ИмяФайлаGPG + """ --recipient " + эл.Параметр + " --encrypt """ + ИмяФайлаИсточника + """";
            ЗапуститьПриложение(СтрокаЗапуска, ФайлИсточникНаДиске.Путь, Истина); 
            
            ФайлGPGНаДиске = Новый Файл(ИмяФайлаGPG);
            Если ФайлGPGНаДиске.Существует() Тогда
                                                    
                Попытка
                    НоваяСтрока.Письмо = Новый ИнтернетПочтовоеСообщение;
                     НоваяСтрока.Письмо.Получатели.Добавить(НоваяСтрока.Почта);
                    НоваяСтрока.Письмо.Отправитель = мОтправитель;            
                    
                    мСтрока = Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Получить().Получить().СтрокаСоединения;
                    мПарам = СтроковыеФункцииКлиентСервер.ПолучитьПараметрыИзСтроки(мСтрока);
                    мСтрока = "e1c://server/" + мПарам.Srvr + "/" + мПарам.Ref + "#" + ПолучитьНавигационнуюСсылку(Документ);
                    ЗначениеПараметра = "<a href=""" + мСтрока + """ target=""_blank"">" + Документ + "</a>";
                    
                    ТекстПисьма = "
                    |<br>
                    |<br>Письмо сгенерировано автоматически.
                    |<br>
                    |<br>"+ЗначениеПараметра+"
                    |<br>Обработка: "+СокрЛП(Настройка)+", версия: " + СокрЛП(Версия) + "
                    |<br>CRC данных 1с: " + СокрЛП(CRC) + "
                    |<br>";
                    
                    НоваяСтрока.Письмо.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
                    НоваяСтрока.Письмо.Тема = ИмяФайла;
                    НоваяСтрока.Письмо.Вложения.Добавить(ИмяФайлаGPG, ИмяФайла);
                Исключение
                    Отказ = Истина;
                    мОписаниеОшибки = мОписаниеОшибки + "
                            |Не удалось сформировать письмо для отправки на почту <"+НоваяСтрока.Почта+">, " + ОписаниеОшибки();
                КонецПопытки;
            Иначе
                Отказ = Истина;
                мОписаниеОшибки = мОписаниеОшибки + "
                        |Не получен зашифрованый файл для отправки на почту <"+НоваяСтрока.Почта+">";
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
   antihacker
 
26 - 31.01.18 - 06:03
Всем привет. У меня есть код в ПХП

$result = mysqli_query($mysqlicon,"SELECT * FROM dbnomenclature_tbl WHERE from_user_id='".$user_id."'");
        $nomenclature_list = array();

        while ($myrow = mysqli_fetch_array($result, MYSQLI_BOTH))
        {
            $nomenclature_list[] = array
            ('id_from_client' => "" . $myrow['nom_id_from_client'] . "",
             'nomenclature_name' => "" . $myrow['nomenclature_name'] . ""
            );
        }
        mysqli_free_result($result);
        $www = json_encode($nomenclature_list);
        var_dump($nomenclature_list);
        @header('HTTP/1.1 200 Ok');
        @header('Content-type: text/html; charset=utf-8');
        print ($nomenclature_list);


Он мне возвращает в 1С такой результат


array(10) {
  [0]=>
  array(2) {
    ["id_from_client"]=>
    string(11) "00000000002"
    ["nomenclature_name"]=>
    string(18) "Материалы"
  }
  [1]=>
  array(2) {
    ["id_from_client"]=>
    string(11) "00000000005"
    ["nomenclature_name"]=>
    string(35) "Собственные услуги"
  }

}
Array

Как теперь в 1С ЭТО ПРОЧИТАТЬ ?
   Сияющий в темноте
 
27 - 31.01.18 - 08:09
md5 везде одна и одинаковая,если у кого-то получается другая и не проходит тесты,то простоиу кого то руки не из того места и его г.внокод ничего общего с md5 не имеет.
просто,в хэшфункцию передаются байты,а символы,особенно русские,могут быть по разному закодированы,чтобы не было проблем,нужно использовать везде одинаковую кодировку,тогда проблем не будет
и эта,md5 уже не рекомендуется,кошерно sha256 использовать,если кому набо,могу на VbScript выложить
   antihacker
 
28 - 31.01.18 - 08:14
Сияющий в темноте, с этим я разобрался


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.