Работа с криптографией на примере получения хэша SHA-512 в 1С

Публикация № 175332

Разработка - Защита и шифрование

22
Понадобилось мне как то сделать одну СМС-рассылку в 1С с методом усиленной авторизации, в которой необходимо было получить хэш SHA-512. Было перерыто половина интернета и ничего толкового именно по SHA-512 найдено так и не было...
В результате был найден способ как получить криптографическую функцию в 1С не копаясь в RFC и спецификациях относительно быстро и самое главное отлаженную от и до.

На ИСе есть пару статей на эту тему, но, повторюсь, не для SHA-512.

Вот ссылки:

MD5 Hash файла

ХЭШ функция МД5 (MD5)

На одном из сайтов наткнулся на итнересную идею: использовать готовые функции на других скриптовых языках программирования и заставить их выполняться в 1С. Таким образом можно компенсировать в 1С отсутсвие побитовых операций, доступ к WMI и всего прочего. Сделать нам это поможет Microsoft Script Control.

Объект Microsoft Script Control позволит исполнить код на VBScript или JScript. Присутствует в Windows начиная с версии 2000, в более ранних может быть установлен.

Конечно, я не претендую на оригинальность идеи, но, все же я думаю, кто-то найдет эту информацию полезной для себя.

Таким макаром получилось очень быстро сделать функцию для работы с хэшем SHA-512. Вот, что получилось:

Функция SHA512(Стр)

   
ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
   
ScrptCtrl.Language = "JScript";
   
ScrptCtrl.AddCode(
       
"function SHA512(str) {
        |  function int64(msint_32, lsint_32) {
        |   this.highOrder = msint_32;
        |   this.lowOrder = lsint_32;
        |  }
        |  var H = [new int64(0x6a09e667, 0xf3bcc908), new int64(0xbb67ae85, 0x84caa73b),
        |     new int64(0x3c6ef372, 0xfe94f82b), new int64(0xa54ff53a, 0x5f1d36f1),
        |     new int64(0x510e527f, 0xade682d1), new int64(0x9b05688c, 0x2b3e6c1f),
        |     new int64(0x1f83d9ab, 0xfb41bd6b), new int64(0x5be0cd19, 0x137e2179)];
        |  var K = [new int64(0x428a2f98, 0xd728ae22), new int64(0x71374491, 0x23ef65cd),
        |     new int64(0xb5c0fbcf, 0xec4d3b2f), new int64(0xe9b5dba5, 0x8189dbbc),
        |     new int64(0x3956c25b, 0xf348b538), new int64(0x59f111f1, 0xb605d019),
        |     new int64(0x923f82a4, 0xaf194f9b), new int64(0xab1c5ed5, 0xda6d8118),
        |     new int64(0xd807aa98, 0xa3030242), new int64(0x12835b01, 0x45706fbe),
        |     new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, 0xd5ffb4e2),
        |     new int64(0x72be5d74, 0xf27b896f), new int64(0x80deb1fe, 0x3b1696b1),
        |     new int64(0x9bdc06a7, 0x25c71235), new int64(0xc19bf174, 0xcf692694),
        |     new int64(0xe49b69c1, 0x9ef14ad2), new int64(0xefbe4786, 0x384f25e3),
        |     new int64(0x0fc19dc6, 0x8b8cd5b5), new int64(0x240ca1cc, 0x77ac9c65),
        |     new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
        |     new int64(0x5cb0a9dc, 0xbd41fbd4), new int64(0x76f988da, 0x831153b5),
        |     new int64(0x983e5152, 0xee66dfab), new int64(0xa831c66d, 0x2db43210),
        |     new int64(0xb00327c8, 0x98fb213f), new int64(0xbf597fc7, 0xbeef0ee4),
        |     new int64(0xc6e00bf3, 0x3da88fc2), new int64(0xd5a79147, 0x930aa725),
        |     new int64(0x06ca6351, 0xe003826f), new int64(0x14292967, 0x0a0e6e70),
        |     new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
        |     new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, 0x9d95b3df),
        |     new int64(0x650a7354, 0x8baf63de), new int64(0x766a0abb, 0x3c77b2a8),
        |     new int64(0x81c2c92e, 0x47edaee6), new int64(0x92722c85, 0x1482353b),
        |     new int64(0xa2bfe8a1, 0x4cf10364), new int64(0xa81a664b, 0xbc423001),
        |     new int64(0xc24b8b70, 0xd0f89791), new int64(0xc76c51a3, 0x0654be30),
        |     new int64(0xd192e819, 0xd6ef5218), new int64(0xd6990624, 0x5565a910),
        |     new int64(0xf40e3585, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
        |     new int64(0x19a4c116, 0xb8d2d0c8), new int64(0x1e376c08, 0x5141ab53),
        |     new int64(0x2748774c, 0xdf8eeb99), new int64(0x34b0bcb5, 0xe19b48a8),
        |     new int64(0x391c0cb3, 0xc5c95a63), new int64(0x4ed8aa4a, 0xe3418acb),
        |     new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, 0xd6b2b8a3),
        |     new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
        |     new int64(0x84c87814, 0xa1f0ab72), new int64(0x8cc70208, 0x1a6439ec),
        |     new int64(0x90befffa, 0x23631e28), new int64(0xa4506ceb, 0xde82bde9),
        |     new int64(0xbef9a3f7, 0xb2c67915), new int64(0xc67178f2, 0xe372532b),
        |     new int64(0xca273ece, 0xea26619c), new int64(0xd186b8c7, 0x21c0c207),
        |     new int64(0xeada7dd6, 0xcde0eb1e), new int64(0xf57d4f7f, 0xee6ed178),
        |     new int64(0x06f067aa, 0x72176fba), new int64(0x0a637dc5, 0xa2c898a6),
        |     new int64(0x113f9804, 0xbef90dae), new int64(0x1b710b35, 0x131c471b),
        |     new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
        |     new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, 0x9c100d4c),
        |     new int64(0x4cc5d4be, 0xcb3e42b6), new int64(0x597f299c, 0xfc657e2a),
        |     new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)];
        |  var W = new Array(64);
        |  var a, b, c, d, e, f, g, h, i, j;
        |  var T1, T2;
        |  var charsize = 8;
        |  function utf8_encode(str) {
        |   return unescape(encodeURIComponent(str));
        |  }
        |  function str2binb(str) {
        |   var bin = [];
        |   var mask = (1 << charsize) - 1;
        |   var len = str.length * charsize;
        |   for (var i = 0; i < len; i += charsize) {
        |     bin[i >> 5] |= (str.charCodeAt(i / charsize) & mask) << (32 - charsize - (i % 32));
        |   }
        |   return bin;
        |  }
        |  function binb2hex(binarray) {
        |   var hex_tab = ""0123456789abcdef"";
        |   var str = """";
        |   var length = binarray.length * 4;
        |   var srcByte;
        |   for (var i = 0; i < length; i += 1) {
        |     srcByte = binarray[i >> 2] >> ((3 - (i % 4)) * 8);
        |     str += hex_tab.charAt((srcByte >> 4) & 0xF) + hex_tab.charAt(srcByte & 0xF);
        |   }
        |   return str;
        |  }
        |  function safe_add_2(x, y) {
        |   var lsw, msw, lowOrder, highOrder;
        |   lsw = (x.lowOrder & 0xFFFF) + (y.lowOrder & 0xFFFF);
        |   msw = (x.lowOrder >>> 16) + (y.lowOrder >>> 16) + (lsw >>> 16);
        |   lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   lsw = (x.highOrder & 0xFFFF) + (y.highOrder & 0xFFFF) + (msw >>> 16);
        |   msw = (x.highOrder >>> 16) + (y.highOrder >>> 16) + (lsw >>> 16);
        |   highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   return new int64(highOrder, lowOrder);
        |  }
        |  function safe_add_4(a, b, c, d) {
        |   var lsw, msw, lowOrder, highOrder;
        |   lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) + (c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF);
        |   msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) + (c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (lsw >>> 16);
        |   lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   lsw = (a.highOrder & 0xFFFF) + (b.highOrder & 0xFFFF) + (c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (msw >>> 16);
        |   msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) + (c.highOrder >>> 16) + (d.highOrder >>> 16) + (lsw >>> 16);
        |   highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   return new int64(highOrder, lowOrder);
        |  }
        |  function safe_add_5(a, b, c, d, e) {
        |   var lsw, msw, lowOrder, highOrder;
        |   lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) + (c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF) + (e.lowOrder & 0xFFFF);
        |   msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) + (c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (e.lowOrder >>> 16) + (lsw >>> 16);
        |   lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   lsw = (a.highOrder & 0xFFFF)+(b.highOrder & 0xFFFF)+(c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (e.highOrder & 0xFFFF) + (msw >>> 16);
        |   msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) + (c.highOrder >>> 16) + (d.highOrder >>> 16) + (e.highOrder >>> 16) + (lsw >>> 16);
        |   highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);
        |   return new int64(highOrder, lowOrder);
        |  }
        |  function maj(x, y, z) {
        |   return new int64(
        |     (x.highOrder & y.highOrder) ^ (x.highOrder & z.highOrder) ^ (y.highOrder & z.highOrder),
        |     (x.lowOrder & y.lowOrder) ^ (x.lowOrder & z.lowOrder) ^ (y.lowOrder & z.lowOrder)
        |   );
        |  }
        |  function ch(x, y, z) {
        |   return new int64(
        |     (x.highOrder & y.highOrder) ^ (~x.highOrder & z.highOrder),
        |     (x.lowOrder & y.lowOrder) ^ (~x.lowOrder & z.lowOrder)
        |   );
        |  }
        |  function rotr(x, n) {
        |   if (n         |     return new int64(
        |      (x.highOrder >>> n) | (x.lowOrder << (32 - n)),
        |      (x.lowOrder >>> n) | (x.highOrder << (32 - n))
        |     );
        |   } else {
        |     return new int64(
        |      (x.lowOrder >>> n) | (x.highOrder << (32 - n)),
        |      (x.highOrder >>> n) | (x.lowOrder << (32 - n))
        |     );
        |   }
        |  }
        |  function sigma0(x) {
        |   var rotr28 = rotr(x, 28);
        |   var rotr34 = rotr(x, 34);
        |   var rotr39 = rotr(x, 39);
        |   return new int64(
        |     rotr28.highOrder ^ rotr34.highOrder ^ rotr39.highOrder,
        |     rotr28.lowOrder ^ rotr34.lowOrder ^ rotr39.lowOrder
        |   );
        |  }
        |  function sigma1(x) {
        |   var rotr14 = rotr(x, 14);
        |   var rotr18 = rotr(x, 18);
        |   var rotr41 = rotr(x, 41);
        |   return new int64(
        |     rotr14.highOrder ^ rotr18.highOrder ^ rotr41.highOrder,
        |     rotr14.lowOrder ^ rotr18.lowOrder ^ rotr41.lowOrder
        |   );
        |  }
        |  function gamma0(x) {
        |   var rotr1 = rotr(x, 1), rotr8 = rotr(x, 8), shr7 = shr(x, 7);
        |   return new int64(
        |     rotr1.highOrder ^ rotr8.highOrder ^ shr7.highOrder,
        |     rotr1.lowOrder ^ rotr8.lowOrder ^ shr7.lowOrder
        |   );
        |  }
        |  function gamma1(x) {
        |   var rotr19 = rotr(x, 19);
        |   var rotr61 = rotr(x, 61);
        |   var shr6 = shr(x, 6);
        |   return new int64(
        |     rotr19.highOrder ^ rotr61.highOrder ^ shr6.highOrder,
        |     rotr19.lowOrder ^ rotr61.lowOrder ^ shr6.lowOrder
        |   );
        |  }
        |  function shr(x, n) {
        |   if (n         |     return new int64(
        |      x.highOrder >>> n,
        |      x.lowOrder >>> n | (x.highOrder << (32 - n))
        |     );
        |   } else {
        |     return new int64(
        |      0,
        |      x.highOrder << (32 - n)
        |     );
        |   }
        |  }
        |  str = utf8_encode(str);
        |  strlen = str.length*charsize;
        |  str = str2binb(str);
        |  str[strlen >> 5] |= 0x80 << (24 - strlen % 32);
        |  str[(((strlen + 128) >> 10) << 5) + 31] = strlen;
        |  for (var i = 0; i < str.length; i += 32) {
        |   a = H[0];
        |   b = H[1];
        |   c = H[2];
        |   d = H[3];
        |   e = H[4];
        |   f = H[5];
        |   g = H[6];
        |   h = H[7];
        |   for (var j = 0; j < 80; j++) {
        |     if (j < 16) {
        |      W[j] = new int64(str[j*2 + i], str[j*2 + i + 1]);
        |     } else {
        |      W[j] = safe_add_4(gamma1(W[j - 2]), W[j - 7], gamma0(W[j - 15]), W[j - 16]);
        |     }
        |     T1 = safe_add_5(h, sigma1(e), ch(e, f, g), K[j], W[j]);
        |     T2 = safe_add_2(sigma0(a), maj(a, b, c));
        |     h = g;
        |     g = f;
        |     f = e;
        |     e = safe_add_2(d, T1);
        |     d = c;
        |     c = b;
        |     b = a;
        |     a = safe_add_2(T1, T2);
        |   }
        |   H[0] = safe_add_2(a, H[0]);
        |   H[1] = safe_add_2(b, H[1]);
        |   H[2] = safe_add_2(c, H[2]);
        |   H[3] = safe_add_2(d, H[3]);
        |   H[4] = safe_add_2(e, H[4]);
        |   H[5] = safe_add_2(f, H[5]);
        |   H[6] = safe_add_2(g, H[6]);
        |   H[7] = safe_add_2(h, H[7]);
        |  }
        |  var binarray = [];
        |  for (var i = 0; i < H.length; i++) {
        |   binarray.push(H[i].highOrder);
        |   binarray.push(H[i].lowOrder);
        |  }
        |  return binb2hex(binarray);
        |}"
   
);

   
Хэш = ScrptCtrl.Run("SHA512", Стр);

   
ScrptCtrl = "";

    Возврат
Хэш;

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

Код функции на JScript взят с: http://www.happycode.info/javascript-sha-512/

Я думаю чуть-чуть модифицировав код, можно завставить шифровать и расшифровывать данные, добавить другие хэш-функции и т.д. Да и вообще использовать подобный подход в других направлениях.

PS: В комментариях к статье пользователь yukon предложил способ, который позволяет добиться того же, но испоьзуя другие возможности (требуется .Net):

Текст = Новый COMОбъект("System.Text.UTF8Encoding");
КриптоSHA512 = Новый COMОбъект("System.Security.Cryptography.SHA512Managed");
Хэш = КриптоSHA512.ComputeHash_2(Текст.GetBytes_4("ололо")).Выгрузить();

Этот код вернет массив из которого не сложно получить хэш строкой.

Сайт: www.softonit.ru

22

Скачать файлы

Наименование Файл Версия Размер
Обработка получения хэша SHA-512 от введенного текста
.epf 8,49Kb
25.02.13
35
.epf 8,49Kb 35 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. andrewks 1268 25.02.13 16:11 Сейчас в теме
Я думаю чуть-чуть модифицировав код, можно завставить шифровать и расшифровывать данные

хэш-функция в принципе не способна шифровать и расшифровывать данные
2. Diversus 2016 25.02.13 16:17 Сейчас в теме
(1) Я знаю, что хэш-функция это необратимая функция.
Я говорю о том, что с помощью такого подхода можно заставить ее и шифровать. Заменив функцию SHA-512, на, допустим, функцию по шифрованию AES, DES, RC4 и т.д.
Мы получим превосходные данные по скорости работы.
3. andrewks 1268 25.02.13 16:25 Сейчас в теме
(2) "заставить ее и шифровать" кого - её? хэш-функцию, или 1С?

подход к исполнению в 1С скриптов js/vbs, как бы, не нов, ещё на 7.7 активно применялся.
4. Diversus 2016 25.02.13 16:27 Сейчас в теме
(3) Конечно речь идет о 1С.
И я так же знаю, что такой подход не нов. Я об этом упомянул в статье:
Конечно, я не претендую на оригинальность идеи, но, все же я думаю, кто-то найдет эту информацию полезной для себя.
5. andrewks 1268 25.02.13 16:33 Сейчас в теме
(4) право, не хочется разводить холивар, но смысл этой публикации мне не совсем понятен.

1. код вчистую взят из http://www.happycode.info/javascript-sha-512/ , однако ссылки на первоисточник кода безжалостно выдраны.
2. используется типовой, давно известный приём вызова скрипта из 1С.

пользуясь такой идеологией, можно на каждый выложенный в интернете полезный джава-скрипт оформить отдельную публикацию на Инфостарте.
6. Diversus 2016 25.02.13 17:54 Сейчас в теме
(5) Ссылку на первоисточник кода на JScript указал.
Сначала хотел уменьшить код функции, чтобы не раздувать публикацию. Хотел указать ссылку в конце, а потом благополучно забыл.
Спасибо что поправили.

Теперь про холивар и прочее.
Тут я не согласен с Вами.

Повторюсь еще раз... Я НЕ НАШЕЛ в интернете хэш-функции SHA-512 для 1С. НИГДЕ!
Решил поделиться с сообществом. Может быть кому-нибудь пригодится так же как и мне.

Что в этом плохого?
pbahushevich; mms76; CyberCerber; sasha777666; +4 Ответить
8. Гость 26.02.13 10:29
(6)

Я НЕ НАШЕЛ в интернете хэш-функции SHA-512 для 1С. НИГДЕ!


Зачем искать интернете хэш-функции SHA-512 для 1С? Все уже давно встроено в ОС, и отлично гуглится. В результате за 10 минут вполне можно сделать такое:

Текст = Новый COMОбъект("System.Text.UTF8Encoding");
КриптоSHA512 = Новый COMОбъект("System.Security.Cryptography.SHA512Managed");
Хэш = КриптоSHA512.ComputeHash_2(Текст.GetBytes_4("ололо")).Выгрузить();


На выходе массив байтов.
mystra; mms76; nihfalck; romansun; Diversus; +5 Ответить
9. Diversus 2016 26.02.13 10:40 Сейчас в теме
(8) Пять балов! Где же Вы раньше были?
Честно искал, но ничего путевого не нашел.
Ваше решение красивее. Попробовал, возвращает массив из которого уже не сложно получить строку с хэшем.

Спасибо за второе решение.
10. yukon 78 26.02.13 11:15 Сейчас в теме
(9)

Где же Вы раньше были?


Недалеко :)

Попробовал, возвращает массив из которого уже не сложно получить строку с хэшем.


Требует .Net, но на всех современных машинах он установлен, так что большой проблемой не будет.
Зайдите regedit-ом в HCR\System.Security.Cryptography.xxxxxx там много интересного по теме.
11. Diversus 2016 26.02.13 11:46 Сейчас в теме
(10) Добавил Ваш вариант в статью
22. user853472 24.12.17 01:24 Сейчас в теме
(8) А как этот массив байтов далее преобразовывать? Вот так работает но не всегда))
HTML = Новый COMОбъект("htmlfile");
    HTML.Open("text/html");
    HTML.Write("<script>TransformString = function(x,y){return x.toString(y?y:16)}</script>");
    ЯваСкрипт = HTML.documentElement.document.Script;
    
    Хеш = "";
    Для Каждого Байт Из ХешБайт Цикл
        Символ = ЯваСкрипт.TransformString(Байт);
        Хеш = Хеш + ?(СтрДлина(Символ) = 2, Символ, "0"+Символ);
    КонецЦикла;
Показать


В фоновом запуске вылетает на строке "ЯваСкрипт = HTML.documentElement.document.Script;" с ошибкой получения атрибута Script.

Очень нужно чтобы работало в фоне, в приведенном варианте от автора нет ключа, который можно указать КриптоSHA512.Key
Как сделать чтобы работало в фоновом запуске на файловой версии 1С ?
24. ogidni 153 26.06.19 11:58 Сейчас в теме
Так же есть майнер
(2)
говорю о том, что с помощью такого подхода можно заставить ее и ш

Хеш функция это основа сквозной криптографии. Действительно можно легко и шифровать и дешифровать. А если использовать механизмы Кунингуава можно и RSA расширить
7. akor77 898 26.02.13 07:22 Сейчас в теме
Спасибо, мне как новичку очень интересно. Хорошо бы было выложить подборку полезных скриптов для 1С, например получение путей к рабочему столу, других системных каталогов и т.п.
12. Антон Ширяев 471 13.03.13 12:15 Сейчас в теме
Как-то начал писать статью как нативными средствами 1С получить хеш SHA-1 (на самом деле любой хеш при программировании его алгоритма, функции XOR, Left/Right Rotate и прочие в принципе готовы), но так как совпало со сменой работы бросил и уже год как висит неопубликованной. Смотрю интерес к получению хешей все же есть. Постараюсь дописать и опубликовать статью.
13. DikSer 26.04.13 08:23 Сейчас в теме
Товарищи а как зашифровать по ключу в HMAC-SHA512?
user853472; serg1974; DISc0nNecT; +3 Ответить
21. Serginio 797 02.09.17 21:50 Сейчас в теме
23. user853472 24.12.17 01:38 Сейчас в теме
(21) Доброго времени суток! Если знаете, подскажите пожалуйста, как из

 ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Запись.Значение)).Выгрузить();


получить хеш для отправки на сервер не используя

HTML = Новый COMОбъект("htmlfile");
HTML.Open("text/html");
HTML.Write("<sc ript>TransformString = function(x,y){return x.toString(y?y:16)}</sc ript>");
ЯваСкрипт = HTML.Script;
	
	Хеш = "";
	Для Каждого Байт Из ХешБайт Цикл
		Символ =  ЯваСкрипт.TransformString(Байт);
		Хеш = Хеш + ?(СтрДлина(Символ) = 2, Символ, "0"+Символ);
	КонецЦикла;
Показать


Так как при фоновом задании вылетает с ошибкой что не найден атрибут "Script"
14. IKSparrow 02.02.15 11:33 Сейчас в теме
Смотрим СП - объект "ХешированиеДанных".
Зачем изобретать велосипед?
15. Diversus 2016 02.02.15 12:22 Сейчас в теме
(14) IKSparrow, этот объект появился в 8.3 статья была создана в 2013 году, когда 8.3 еще была в зародыше и нужно это все было все на платформе 8.2.
Так что там только такие велосипеды и работали :)
16. serg1974 13.01.17 12:42 Сейчас в теме
(14) так ведь там максимум SHA-256 !
jo0506; pbahushevich; +2 Ответить
17. sapser 9 18.08.17 13:18 Сейчас в теме
Здравствуйте!
"возвращает массив из которого уже не сложно получить строку с хэшем"
Подскажите пожалуйста как получить строку с хэшем?
18. xvchk 02.09.17 21:25 Сейчас в теме
(17)

Тоже стакнулся на этой фразе

Попробуй как написано здесь
http://1с-интеграция.рф/useful_links/47/364/
25. ogidni 153 26.06.19 12:00 Сейчас в теме
Голову сломал переписывая этот код на 1С. :-(
26. MuI_I_Ika 667 21.08.19 11:42 Сейчас в теме
27. ogidni 153 21.08.19 12:53 Сейчас в теме
Результат получения открытого ключа btc из приватного?
28. MuI_I_Ika 667 26.08.19 16:33 Сейчас в теме
(27) я ожидал, что в результате переписывания кода получится рабочий код на 1с.
29. ogidni 153 27.08.19 10:55 Сейчас в теме
(28) Я тоже ожидал, что то похожее получил, но есть ньюансы.
Оставьте свое сообщение

См. также

Обозреватель криптографии 25

Инструменты и обработки Системный администратор Программист Внешний отчет (ert,erf) v8 Windows Абонемент ($m) Инструментарий разработчика Защита ПО

Отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.

2 стартмани

21.10.2019    1041    2    YPermitin    4       

Компонента аутентификации и шифрования с помощью биометрической информации для Андроид 7

Инструменты и обработки Программист Конфигурация (md, cf) v8::Mobile Android Абонемент ($m) Разработка внешних компонент Защита и шифрование Мобильная разработка

Компонента для мобильной платформы, позволяющая идентифицировать пользователя и шифровать данные с помощью биометрических сканеров.

5 стартмани

17.09.2019    853    1    IgorKissil    0       

Запутывание кода 1С 39

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

Обработка запутывания (обфускации) исходного кода 1С с помощью регулярных выражений.

2 стартмани

02.09.2019    3337    12    leoxz    62       

Защищаем конфигурацию. Один ключ СЛК для всех клиентов 23

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Защита и шифрование

Пользователь защищенной конфигурации вводит регистрационный номер и код доступа. Установка сервера СЛК у пользователя не требуется. Управляем лицензиями удаленно.

1 стартмани

30.08.2019    2728    4    mvxyz    59       

Электронный документооборот для украинских конфигураций 1

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Документооборот и делопроизводство Абонемент ($m) Защита и шифрование

Подсистема электронного документооборота (в дальнейшем ЭД) является конфигурацией 1С:Предприятие, выполняющей базовые функции регистрации НН/РК и загрузки их из Реестра и способной встраиваться с минимальными изменениями в любые, в том числе нетиповые конфигурации 1С. ЭД представляет собой несколько независимых регистров сведений, справочников, документов и обработок, которые можно встроить в любую конфигурацию. «Сердцем» ЭД является обработка «ЭД: Криптопровайдер», которая экспортирует методы взаимодействия 1С с криптобиблиотекой ИИТ

1 стартмани

30.06.2019    1197    5    Asdam    0       

Шифрование текста и файлов с помощью 1С. Используется хеш-код SHA256, Без Capicom, Архиваторов и сторонних служб 22

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Данная статья описывает простейший собственный алгоритм шифрования средствами 1С. Без Capicom, Архиваторов и сторонних служб. Данный метод работает на Платформе 8.3 и т.п. 09.07.19 Добавлена обработка шифрования файлов

1 стартмани

26.06.2019    3170    4    ogidni    39       

Цифровая подпись Cades-BES для XML средствами 1С с помощью КриптоПро 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Защита и шифрование

Обработка иллюстрирует возможность подписания XML SOAP-конверта по стандарту Cades-BES средствами 1С с помощью внешней компоненты КриптоПРО "CAdESCOM" с учетом ГОСТ 2001 и ГОСТ 2012. Стандарт используется в различных механизмах государственных сайтов России, в том числе в СМЭВ и ГИС ЖКХ. Код не привязан к прикладному решению может быть встроен куда угодно, но только на платформе Windows.

1 стартмани

13.05.2019    3205    12    PythonJ    25       

Проверка пинкода для мобильного приложения 2

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8::Mobile Абонемент ($m) Защита и шифрование

Простая проверка с помощью пинкода на вход в мобильное приложение.

3 стартмани

16.04.2019    1289    1    bashinsky    2       

Кодирование Base64 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

Обработка кодирования декодирования строки алгоритмом Base64 через использования потоков.

1 стартмани

18.02.2019    2119    5    BigTaur    6       

Подписываем отчёт об исполнении контрактов ГОЗ или приказ №554 8

Инструменты и обработки Системный администратор Бухгалтер Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Государственные, бюджетные структуры Россия Windows Абонемент ($m) Защита и шифрование

Внешняя обработка, упрощающая подпись файла и генерацию архива с отчётом об исполнении госконтракта по Приказу №554 МО РФ

1 стартмани

06.02.2019    6201    29    semagin@gmail.com    8       

Генератор ФИО, ИНН, СНИЛС и дат рождения 6

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование Обработка справочников

Понадобилась мне обезличенная база биллинга на полтора миллиона лицевых счетов. Забивать существующие ФИО символом "Х" ("Иванов Иван Иванович" -> "Хххххх Хххх Хххххххх") было не интересно. Взял из существующей базы собрал мужские, женские фамилии, имена и отчества и написал генератор случайных ФИО. Также в обработке есть возможность генерировать ИНН физических лиц, СНИЛС и дат рождения.

1 стартмани

03.12.2018    4174    6    BigB    10       

Применение цифровой подписи при организации учёта ТМЦ и ГСМ 10

Статья Программист Архив с данными v8::Mobile v8::Бизнес-процессы 1cv8.cf Абонемент ($m) Защита и шифрование Управление бизнес-процессами (BPM) Мобильная разработка

Статья о том, как внедрение мобильного приложения в бизнес-процессы компании сократило оборот бумажных документов, а простая электронная подпись - заменила аналоговую.

1 стартмани

25.10.2018    4079    2    ikekoval    2       

"Открыть нельзя защищать!" - Где поставить запятую? 20

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

Если Вам интересна эта тема, то вы уже знаете, какие есть возможности по защите кода модулей, внешних обработок и отчетов. Это расширение конфигурации для защиты внешних обработок от просмотра и редактирования кода.

1 стартмани

16.02.2018    9148    11    adam26    9       

Шифрование перестановкой символов 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Простое шифрование строки перестановкой символов.

1 стартмани

14.12.2017    4702    3    unregisteret    3       

ЭЦП по гостам Украины в 1С - Внешняя компонента BilboSign.dll 5

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Windows Абонемент ($m) Разработка внешних компонент Защита и шифрование

Причиной данной разработки послужило отсутствие на данный момент криптопровайдера ЭЦП, который может работать по гостам Украины и использоваться в 1С. Для этого разработана внешняя компонента по технологии NativeAPI.

1 стартмани

11.12.2017    7301    10    Zahary    5       

Обработка шифрования ключом 2

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка шифрования введенной строки. Платформа 8.3 (обычное приложение). В обработке реализован механизм XOR шифрования на платформе 8.3. Может быть полезна при решении задач с шифрованием паролей или текстов или чисел.

1 стартмани

05.12.2017    5872    14    timothy_    3       

Обфускация кода 1С 93

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Обфускация кода 1С как вариант защиты кода.

10 стартмани

09.10.2017    25228    62    VsHome    5       

Обезличивание базы данных для КАМИН:Зарплата для бизнеса 4 0

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf БУ Управление персоналом (HRM) Абонемент ($m) Обработка справочников Защита и шифрование

Данная обработка обезличивает Вашу информационную базу данных. Это значит, что все фамилии, имена, отчества, ИНН, СНИЛС, серии и номера документов, будут заменены случайным набором символов.

1 стартмани

26.06.2017    6767    2    juricher    2       

Обезличивание базы данных средствами скрипта для MSSQL 12

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка предназначена для сотрудников, которым необходимо подготовить обезличенную базу для передачи ее сторонним лицам. Для пользования обработкой необходимо запустить 1С: предприятие в режиме тонкого клиента управляемого приложения. Тестировалась обработка на 1С:Предприятие 8.3 (8.3.8.2088) Обработка генерирует SQL - скрипт на основе структуры метаданных.

10 стартмани

28.02.2017    9549    24    ZadachNik1C    1       

HMAC на встроенном языке 1С 24

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Внешняя обработка хеширования данных HMAC (SHA-1, MD5, SHA-256, CRC-32) без использования внешних компонент.

1 стартмани

25.02.2017    19551    54    Knup    35       

Шифрование и расшифровка строковых полей справочников методом Виженера (с улучшениями) 52

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование Обработка справочников

Обработка по шифрованию и расшифровке строковых полей справочников модифицированным методом Виженера - реализация без внешних компонент, без com-объектов, чистый 1С.

1 стартмани

27.04.2016    21665    32    NikitaXa    16       

Защита разработок от копирования (Обычная и Управляемая форма) 202

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Вы разработчик, и разработали чудесный алгоритм, но не хотите ни с кем с ним делиться - используйте данную разработку, и тогда предполагаемый злоумышленник, глядя на такой код, просто плюнет и начнет писать свой.

1 стартмани

28.03.2016    33380    320    karpik666    123       

Двухфакторная аутентификация в 1С 83

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Защита и шифрование

Двухфакторная аутентификация (2FA) — это механизм, который позволяет защитить ваш аккаунт надежнее, чем традиционный пароль. Пароль должен быть сложным, при этом его нужно всегда помнить, хранить от посторонних глаз и достаточно часто менять. Но даже если вы принимаете все меры, пароль все равно остается уязвимым — например, для вирусов, которые могут перехватить то, что вы набираете на клавиатуре.

1 стартмани

16.02.2016    28628    112    Юрий-К    17       

Генератор сертификатов 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные обработки Защита и шифрование

Недавно пришлось организовывать обмен шифрованными сообщениями в 1С, при этом кучу времени заняла процедура создания сертификатов для работы с "Менеджером криптографии". Как итог сделал небольшую обработку для генерации разных типов сертификатов.

3 стартмани

27.01.2016    16051    28    eskor    4       

Обфускация кода 1С (приведение в нечитаемый вид) для платформы 1С:Предприятие 8.3.7 97

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Обработка для обфуксации (приведения в нечитаемый вид) кода 1С, это может использоваться как один из способов защиты программных модулей.

1 стартмани

20.12.2015    34849    306    masterkio    106       

Обфускация данных в 1С 8

Инструменты и обработки Системный администратор Программист Бухгалтер Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Часто возникает ситуация, когда программист просит предоставить базу данных. Но по соображениям безопасности не хочется показывать ему какую-то информацию. Эта обработка перетасует случайным образом строковые реквизиты справочников. Информация станет нечитаемой.

1 стартмани

03.11.2015    13477    37    kser87    23       

Подсистема шифрования данных + пример реализации: решение Keystore для хранения паролей 10

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Настоящая публикация представляет собой одновременно подсистему функциональности шифрования данных и готовое к использованию решение для хранения паролей в качестве примера реализации работы подсистемы.

3 стартмани

23.06.2015    15045    15    alex271    3       

Ключ защиты из USB накопителя для 8.3 59

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Информационная безопасность Защита и шифрование

Ключ защиты конфигурации из обычной USB-флешки для платформы 8.3. Можно внедрить на любой конфигурации, и ключик не привязывается к определенному рабочему месту. Реализовано в Такси.

5 стартмани

31.05.2015    31306    40    Naposaram    57       

Изменение конфиденциальной информации (обработка, управляемые формы) 13

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8::УФ 1cv8.cf Windows Абонемент ($m) Обработка документов Защита и шифрование Обработка справочников

Обработка позволяет полностью заменить в базе все конфиденциальные данные - все поля справочников, суммы в документах и прочие значения объектов. Идентична по функционалу обработке с ИТС "Изменение конфиденциальной информации", но работает под управляемыми формами и в интерфейсе "Такси". Есть гибкая настройка тех данных, которые необходимо удалять.

1 стартмани

17.05.2015    27824    144    primat    22       

Шифрование текста, хеш сумма 19

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Этот пример показывает, что использование шифрования и получение хеш суммы очень просто. В обработке реализовано шифрование по алгоритму AES и получение хеш суммы MD5. Все делается динамически, без использования файлов.

2 стартмани

15.04.2015    19592    55    MherArsh    22       

Сжатие текстов исключительно средствами языка 1С 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка упаковывает текст и делает его в виде исполняемого SFX. Область применения: Just for fun Побаловался на досуге, размял мозг. Можно применять для упаковки и нечитаемости текстов процедур и функций, или запросов

1 стартмани

25.11.2014    12039    13    eugeniezheludkov    5       

Простое симметричное шифрование табличным смещением 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Данные шифруются одним из самых простых симметричных алгоритмов, в котором зашифрованный символ получается путем смещения исходного символа на дельту.

1 стартмани

06.10.2014    11937    13    insidex    3       

Шредер - не удобочитаемый код 1с 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Нужно сделать текст 1с нечитабельным - не вопрос!

1 стартмани

21.08.2014    14310    44    ivn75    18       

Элементарное шифрование 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Защита и шифрование

Алгоритм шифрования - простая перестановка

1 стартмани

11.02.2014    13407    6    sdn-1    3       

Подписываем файлы с помощью ЭЦП средствами 1с 48

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные обработки Защита и шифрование

Обработка для подписи с помощью сертификата (ЭЦП) произвольных файлов, только средствами платформы 1с. Работает на всех конфигурациях, но только на последних платформах 8.2 и 8.3, где есть менеджер криптографии.

1 стартмани

05.09.2013    52660    326    anig99    21       

Обработка-пример шифрования в 1С 8.2 13

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Обработка-пример шифрования в 1С 8.2 До безобразия простой код, однако, весьма эффективный алгоритм. Иногда требуется что-то подобное, например, у нас в базе хранятся пароли на расчетные листки и на ключевые константы и регистры.

1 стартмани

21.12.2012    18437    83    vladshnurkoff    11       

Искажение данных, очистка данных из информационной базы 3

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Чистка базы Защита и шифрование

Иногда нужно передать базу в третьи руки, но так что бы клиент был спокоен за свои данные - сделал небольшую обработку искажения текстовых данных во всех справочниках, удаления записей независимых регистров сведений и вычистки планов обменов. Обработка не претендует на универсальность. Универсальная уже есть на ИТС (1CIts\EXE\EXTREPS\UNIREPS81\UpdatePrivateInformation).

1 стартмани

04.12.2012    13710    16    bxz    7       

Защита конфигурации 1С (без внешних компонент, супер легкая и быстрая) 37

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Возможность автоматизации легкой и быстрой защиты конфигурации от распространения неблагонадежными клиентами. Работает только в режиме обычного приложения. Защита не полноценная (в случае если не применять обфускатор к спец.модулям), но позволяет снять проблему.

3 стартмани

11.05.2012    36991    167    Kyrales    45       

Создание "обезличенной" демо базы 8,1,8.2 и 8.3 Управляемые и обычные формы. 49

Инструменты и обработки no Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование Обработка справочников

Иногда нужно продемонстрировать работу базы посторонним людям, которым совершенно нет необходимости видить реальные наименования контрагентов, номенклатуры, договоров, пользователей и организаций.

1 стартмани

03.12.2010    27108    284    milkers    10       

Индивидуальный Ключ Защиты (ИКЗ) 235

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Защитите свою корпоративную информацию от несанкционированного доступа. Контролируйте кто, когда и как может пользоваться вашей информацией с помощью "ИКЗ" (Индивидуального Ключа Защиты). ИКЗ может быть внедрен абсолютно в любую "свою" или типовую конфигурацию от 1С...

1 стартмани

21.10.2010    25145    485    wacko    65       

Кодирование префикса из 3-х символов по стандарту RADIX-50 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование Обработка справочников

Возникла необходимость кодировать префикс в справочниках для выгрузки в стороннюю базу, и декодировать при поиске элементов по коду при приеме данных из этой базы, где коды элеменов только числовые...

1 стартмани

05.08.2010    11839    13    Larkin    1       

Привязка конфигурации к диску 40

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Простой способ определить по id HDD, используют ли твою работу на постороннем компьютере

1 стартмани

13.04.2010    16892    228    simgo83    39       

Golden Key 8.1 Prototype 69

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

В этот раз не будет внешней компоненты, не будет программной оболочки. В этот раз все – средствами 1С, все просто и достаточно эффективно …

1 стартмани

30.03.2010    21807    297    O-Planet    23       

Защита внешней обработки - прячем и шифруем макет 60

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Данная статья посвящена одному из способов защиты макета табличного документа, содержащегося во внешней обработке, от несанкционированного использования.

2 стартмани

12.03.2010    27697    1    ll13    33