|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 | /** * Javascript GOST R 34.11-94 hash function implementation. * Based on C-code by Alexei Kravchenko and Markku-Juhani Saarinen * and Utf8 class by Chris Veness. * * Usage: gosthash("<string>") returns a hash-string. * Alexander Okrugin (November, 11, 2011) */ var Utf8 = {}; // Utf8 namespace Utf8.encode = function (strUni) { // use regular expressions & String.replace callback function for better efficiency // than procedural approaches var strUtf = strUni.replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz function (c) { var cc = c.charCodeAt(0); return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f); }); strUtf = strUtf.replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz function (c) { var cc = c.charCodeAt(0); return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f); }); return strUtf; } Utf8.decode = function (strUtf) { // note: decode 3-byte chars first as decoded 2-byte strings could appear to be 3-byte char! var strUni = strUtf.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars function (c) { // (note parentheses for precence) var cc = ((c.charCodeAt(0) & 0x0f) << 12) | ((c.charCodeAt(1) & 0x3f) << 6) | (c.charCodeAt(2) & 0x3f); return String.fromCharCode(cc); }); strUni = strUni.replace(/[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars function (c) { // (note parentheses for precence) var cc = (c.charCodeAt(0) & 0x1f) << 6 | c.charCodeAt(1) & 0x3f; return String.fromCharCode(cc); }); return strUni; } function rol(word, n) { return ((word << (n & 0x1f)) | (word >>> (32 - (n & 0x1f)))); } function ch2hex(val) { var hext = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; return hext[(val >>> 4) & 15] + hext[val & 15]; } function str2bytes(str) { var arr = Array(str.length); for (var i = 0; i < str.length; ++i) arr[i] = str.charCodeAt(i) & 255; return arr; } var hash = new Array(8); var sum = new Array(8); var message = new Array(32); var length = 0, r = 0, l = 0; var gost_sbox = new Array(4); for (var j = 0; j < 4; j++) gost_sbox[j] = new Array(256); /* eight 4-bit S-Boxes as defined by RFC 4351 section 11.2 */ var sbox = [ [4, 10, 9, 2, 13, 8, 0, 14, 6, 11, 1, 12, 7, 15, 5, 3], [14, 11, 4, 12, 6, 13, 15, 10, 2, 3, 8, 1, 0, 7, 5, 9], [5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11], [7, 13, 10, 1, 0, 8, 9, 15, 14, 4, 6, 12, 11, 2, 5, 3], [6, 12, 7, 1, 5, 15, 13, 8, 4, 10, 9, 14, 0, 3, 11, 2], [4, 11, 10, 0, 7, 2, 1, 13, 3, 6, 8, 5, 9, 12, 15, 14], [13, 11, 4, 1, 3, 15, 5, 9, 0, 10, 14, 7, 6, 8, 2, 12], [1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12] ]; /** CryptoPro S-Box: */ /* var sbox = [ [10, 4, 5, 6, 8, 1, 3, 7, 13, 12, 14, 0, 9, 2, 11, 15], [5, 15, 4, 0, 2, 13, 11, 9, 1, 7, 6, 3, 12, 14, 10, 8], [7, 15, 12, 14, 9, 4, 1, 0, 3, 11, 5, 2, 6, 10, 8, 13], [4, 10, 7, 12, 0, 15, 2, 8, 14, 1, 6, 5, 13, 11, 9, 3], [7, 6, 4, 11, 9, 12, 2, 10, 1, 8, 0, 14, 15, 13, 3, 5], [7, 6, 2, 4, 13, 9, 15, 0, 10, 1, 5, 11, 8, 14, 12, 3], [13, 14, 4, 1, 7, 0, 5, 10, 3, 12, 8, 15, 6, 2, 9, 11], [1, 3, 10, 9, 5, 11, 4, 15, 8, 6, 7, 14, 13, 0, 2, 12] ]; */ /** * Initialize algorithm context before calculaing hash. */ function gost_init() { for (var i = 0; i < 8; i++) { hash[i] = 0; sum[i] = 0; message[4 * i] = 0; message[4 * i + 1] = 0; message[4 * i + 2] = 0; message[4 * i + 3] = 0; } length = 0; } /* * A full encryption round of GOST 28147-89. * Temporary variables tmp assumed and variables r and l for left and right * blocks. */ function GOST_ENCRYPT_ROUND(key1, key2) { var tmp = (key1) + r; l ^= gost_sbox[0][tmp & 0xff] ^ gost_sbox[1][(tmp >>> 8) & 0xff] ^ gost_sbox[2][(tmp >>> 16) & 0xff] ^ gost_sbox[3][(tmp >>> 24) & 0xff]; tmp = (key2) + l; r ^= gost_sbox[0][tmp & 0xff] ^ gost_sbox[1][(tmp >>> 8) & 0xff] ^ gost_sbox[2][(tmp >>> 16) & 0xff] ^ gost_sbox[3][(tmp >>> 24) & 0xff]; } /* encrypt a block with the given key */ function GOST_ENCRYPT(ii, key, varhash) { r = varhash[ii], l = varhash[ii + 1]; GOST_ENCRYPT_ROUND(key[0], key[1]); GOST_ENCRYPT_ROUND(key[2], key[3]); GOST_ENCRYPT_ROUND(key[4], key[5]); GOST_ENCRYPT_ROUND(key[6], key[7]); GOST_ENCRYPT_ROUND(key[0], key[1]); GOST_ENCRYPT_ROUND(key[2], key[3]); GOST_ENCRYPT_ROUND(key[4], key[5]); GOST_ENCRYPT_ROUND(key[6], key[7]); GOST_ENCRYPT_ROUND(key[0], key[1]); GOST_ENCRYPT_ROUND(key[2], key[3]); GOST_ENCRYPT_ROUND(key[4], key[5]); GOST_ENCRYPT_ROUND(key[6], key[7]); GOST_ENCRYPT_ROUND(key[7], key[6]); GOST_ENCRYPT_ROUND(key[5], key[4]); GOST_ENCRYPT_ROUND(key[3], key[2]); GOST_ENCRYPT_ROUND(key[1], key[0]); return [l, r]; } /** * The core transformation. Process a 512-bit block. * * @param block the message block to process */ function gost_block_compress(block) { var key = new Array(8); var u = new Array(8); var v = new Array(8); var w = new Array(8); var s = new Array(8); /* u := hash, v := <256-bit message block> */ for (var i = 0; i < 8; i++) { u[i] = hash[i]; v[i] = block[i]; } /* w := u xor v */ w[0] = u[0] ^ v[0]; w[1] = u[1] ^ v[1]; w[2] = u[2] ^ v[2]; w[3] = u[3] ^ v[3]; w[4] = u[4] ^ v[4]; w[5] = u[5] ^ v[5]; w[6] = u[6] ^ v[6]; w[7] = u[7] ^ v[7]; /* calculate keys, encrypt hash and store result to the s[] array */ for (var i = 0;; i += 2) { /* key generation: key_i := P(w) */ key[0] = (w[0] & 0x000000ff) | ((w[2] & 0x000000ff) << 8) | ((w[4] & 0x000000ff) << 16) | ((w[6] & 0x000000ff) << 24); key[1] = ((w[0] & 0x0000ff00) >>> 8) | (w[2] & 0x0000ff00) | ((w[4] & 0x0000ff00) << 8) | ((w[6] & 0x0000ff00) << 16); key[2] = ((w[0] & 0x00ff0000) >>> 16) | ((w[2] & 0x00ff0000) >>> 8) | (w[4] & 0x00ff0000) | ((w[6] & 0x00ff0000) << 8); key[3] = ((w[0] & 0xff000000) >>> 24) | ((w[2] & 0xff000000) >>> 16) | ((w[4] & 0xff000000) >>> 8) | (w[6] & 0xff000000); key[4] = (w[1] & 0x000000ff) | ((w[3] & 0x000000ff) << 8) | ((w[5] & 0x000000ff) << 16) | ((w[7] & 0x000000ff) << 24); key[5] = ((w[1] & 0x0000ff00) >>> 8) | (w[3] & 0x0000ff00) | ((w[5] & 0x0000ff00) << 8) | ((w[7] & 0x0000ff00) << 16); key[6] = ((w[1] & 0x00ff0000) >>> 16) | ((w[3] & 0x00ff0000) >>> 8) | (w[5] & 0x00ff0000) | ((w[7] & 0x00ff0000) << 8); key[7] = ((w[1] & 0xff000000) >>> 24) | ((w[3] & 0xff000000) >>> 16) | ((w[5] & 0xff000000) >>> 8) | (w[7] & 0xff000000); /* encryption: s_i := E_{key_i} (h_i) */ var res = GOST_ENCRYPT(i, key, hash); s[i] = res[0]; s[i + 1] = res[1]; if (i == 0) { /* w:= A(u) ^ A^2(v) */ w[0] = u[2] ^ v[4]; w[1] = u[3] ^ v[5]; w[2] = u[4] ^ v[6]; w[3] = u[5] ^ v[7]; w[4] = u[6] ^ (v[0] ^= v[2]); w[5] = u[7] ^ (v[1] ^= v[3]); w[6] = (u[0] ^= u[2]) ^ (v[2] ^= v[4]); w[7] = (u[1] ^= u[3]) ^ (v[3] ^= v[5]); } else if ((i & 2) != 0) { if (i == 6) break; /* w := A^2(u) xor A^4(v) xor C_3; u := A(u) xor C_3 */ /* C_3=0xff00ffff000000ffff0000ff00ffff0000ff00ff00ff00ffff00ff00ff00ff00 */ u[2] ^= u[4] ^ 0x000000ff; u[3] ^= u[5] ^ 0xff00ffff; u[4] ^= 0xff00ff00; u[5] ^= 0xff00ff00; u[6] ^= 0x00ff00ff; u[7] ^= 0x00ff00ff; u[0] ^= 0x00ffff00; u[1] ^= 0xff0000ff; w[0] = u[4] ^ v[0]; w[2] = u[6] ^ v[2]; w[4] = u[0] ^ (v[4] ^= v[6]); w[6] = u[2] ^ (v[6] ^= v[0]); w[1] = u[5] ^ v[1]; w[3] = u[7] ^ v[3]; w[5] = u[1] ^ (v[5] ^= v[7]); w[7] = u[3] ^ (v[7] ^= v[1]); } else { /* i==4 here */ /* w:= A( A^2(u) xor C_3 ) xor A^6(v) */ w[0] = u[6] ^ v[4]; w[1] = u[7] ^ v[5]; w[2] = u[0] ^ v[6]; w[3] = u[1] ^ v[7]; w[4] = u[2] ^ (v[0] ^= v[2]); w[5] = u[3] ^ (v[1] ^= v[3]); w[6] = (u[4] ^= u[6]) ^ (v[2] ^= v[4]); w[7] = (u[5] ^= u[7]) ^ (v[3] ^= v[5]); } } /* step hash function: x(block, hash) := psi^61(hash xor psi(block xor psi^12(S))) */ /* 12 rounds of the LFSR and xor in <message block> */ u[0] = block[0] ^ s[6]; u[1] = block[1] ^ s[7]; u[2] = block[2] ^ (s[0] << 16) ^ (s[0] >>> 16) ^ (s[0] & 0xffff) ^ (s[1] & 0xffff) ^ (s[1] >>> 16) ^ (s[2] << 16) ^ s[6] ^ (s[6] << 16) ^ (s[7] & 0xffff0000) ^ (s[7] >>> 16); u[3] = block[3] ^ (s[0] & 0xffff) ^ (s[0] << 16) ^ (s[1] & 0xffff) ^ (s[1] << 16) ^ (s[1] >>> 16) ^ (s[2] << 16) ^ (s[2] >>> 16) ^ (s[3] << 16) ^ s[6] ^ (s[6] << 16) ^ (s[6] >>> 16) ^ (s[7] & 0xffff) ^ (s[7] << 16) ^ (s[7] >>> 16); u[4] = block[4] ^ (s[0] & 0xffff0000) ^ (s[0] << 16) ^ (s[0] >>> 16) ^ (s[1] & 0xffff0000) ^ (s[1] >>> 16) ^ (s[2] << 16) ^ (s[2] >>> 16) ^ (s[3] << 16) ^ (s[3] >>> 16) ^ (s[4] << 16) ^ (s[6] << 16) ^ (s[6] >>> 16) ^ (s[7] & 0xffff) ^ (s[7] << 16) ^ (s[7] >>> 16); u[5] = block[5] ^ (s[0] << 16) ^ (s[0] >>> 16) ^ (s[0] & 0xffff0000) ^ (s[1] & 0xffff) ^ s[2] ^ (s[2] >>> 16) ^ (s[3] << 16) ^ (s[3] >>> 16) ^ (s[4] << 16) ^ (s[4] >>> 16) ^ (s[5] << 16) ^ (s[6] << 16) ^ (s[6] >>> 16) ^ (s[7] & 0xffff0000) ^ (s[7] << 16) ^ (s[7] >>> 16); u[6] = block[6] ^ s[0] ^ (s[1] >>> 16) ^ (s[2] << 16) ^ s[3] ^ (s[3] >>> 16) ^ (s[4] << 16) ^ (s[4] >>> 16) ^ (s[5] << 16) ^ (s[5] >>> 16) ^ s[6] ^ (s[6] << 16) ^ (s[6] >>> 16) ^ (s[7] << 16); u[7] = block[7] ^ (s[0] & 0xffff0000) ^ (s[0] << 16) ^ (s[1] & 0xffff) ^ (s[1] << 16) ^ (s[2] >>> 16) ^ (s[3] << 16) ^ s[4] ^ (s[4] >>> 16) ^ (s[5] << 16) ^ (s[5] >>> 16) ^ (s[6] >>> 16) ^ (s[7] & 0xffff) ^ (s[7] << 16) ^ (s[7] >>> 16); /* 1 round of the LFSR (a mixing transformation) and xor with <hash> */ v[0] = hash[0] ^ (u[1] << 16) ^ (u[0] >>> 16); v[1] = hash[1] ^ (u[2] << 16) ^ (u[1] >>> 16); v[2] = hash[2] ^ (u[3] << 16) ^ (u[2] >>> 16); v[3] = hash[3] ^ (u[4] << 16) ^ (u[3] >>> 16); v[4] = hash[4] ^ (u[5] << 16) ^ (u[4] >>> 16); v[5] = hash[5] ^ (u[6] << 16) ^ (u[5] >>> 16); v[6] = hash[6] ^ (u[7] << 16) ^ (u[6] >>> 16); v[7] = hash[7] ^ (u[0] & 0xffff0000) ^ (u[0] << 16) ^ (u[1] & 0xffff0000) ^ (u[1] << 16) ^ (u[6] << 16) ^ (u[7] & 0xffff0000) ^ (u[7] >>> 16); /* 61 rounds of LFSR, mixing up hash */ hash[0] = (v[0] & 0xffff0000) ^ (v[0] << 16) ^ (v[0] >>> 16) ^ (v[1] >>> 16) ^ (v[1] & 0xffff0000) ^ (v[2] << 16) ^ (v[3] >>> 16) ^ (v[4] << 16) ^ (v[5] >>> 16) ^ v[5] ^ (v[6] >>> 16) ^ (v[7] << 16) ^ (v[7] >>> 16) ^ (v[7] & 0xffff); hash[1] = (v[0] << 16) ^ (v[0] >>> 16) ^ (v[0] & 0xffff0000) ^ (v[1] & 0xffff) ^ v[2] ^ (v[2] >>> 16) ^ (v[3] << 16) ^ (v[4] >>> 16) ^ (v[5] << 16) ^ (v[6] << 16) ^ v[6] ^ (v[7] & 0xffff0000) ^ (v[7] >>> 16); hash[2] = (v[0] & 0xffff) ^ (v[0] << 16) ^ (v[1] << 16) ^ (v[1] >>> 16) ^ (v[1] & 0xffff0000) ^ (v[2] << 16) ^ (v[3] >>> 16) ^ v[3] ^ (v[4] << 16) ^ (v[5] >>> 16) ^ v[6] ^ (v[6] >>> 16) ^ (v[7] & 0xffff) ^ (v[7] << 16) ^ (v[7] >>> 16); hash[3] = (v[0] << 16) ^ (v[0] >>> 16) ^ (v[0] & 0xffff0000) ^ (v[1] & 0xffff0000) ^ (v[1] >>> 16) ^ (v[2] << 16) ^ (v[2] >>> 16) ^ v[2] ^ (v[3] << 16) ^ (v[4] >>> 16) ^ v[4] ^ (v[5] << 16) ^ (v[6] << 16) ^ (v[7] & 0xffff) ^ (v[7] >>> 16); hash[4] = (v[0] >>> 16) ^ (v[1] << 16) ^ v[1] ^ (v[2] >>> 16) ^ v[2] ^ (v[3] << 16) ^ (v[3] >>> 16) ^ v[3] ^ (v[4] << 16) ^ (v[5] >>> 16) ^ v[5] ^ (v[6] << 16) ^ (v[6] >>> 16) ^ (v[7] << 16); hash[5] = (v[0] << 16) ^ (v[0] & 0xffff0000) ^ (v[1] << 16) ^ (v[1] >>> 16) ^ (v[1] & 0xffff0000) ^ (v[2] << 16) ^ v[2] ^ (v[3] >>> 16) ^ v[3] ^ (v[4] << 16) ^ (v[4] >>> 16) ^ v[4] ^ (v[5] << 16) ^ (v[6] << 16) ^ (v[6] >>> 16) ^ v[6] ^ (v[7] << 16) ^ (v[7] >>> 16) ^ (v[7] & 0xffff0000); hash[6] = v[0] ^ v[2] ^ (v[2] >>> 16) ^ v[3] ^ (v[3] << 16) ^ v[4] ^ (v[4] >>> 16) ^ (v[5] << 16) ^ (v[5] >>> 16) ^ v[5] ^ (v[6] << 16) ^ (v[6] >>> 16) ^ v[6] ^ (v[7] << 16) ^ v[7]; hash[7] = v[0] ^ (v[0] >>> 16) ^ (v[1] << 16) ^ (v[1] >>> 16) ^ (v[2] << 16) ^ (v[3] >>> 16) ^ v[3] ^ (v[4] << 16) ^ v[4] ^ (v[5] >>> 16) ^ v[5] ^ (v[6] << 16) ^ (v[6] >>> 16) ^ (v[7] << 16) ^ v[7]; } /** * Update block sum and message hash. * * @param block the 256-bit message block to process */ function gost_compute_sum_and_hash(block) { /* compute the 256-bit sum */ var carry = 0; var hb = 0; for (var i = 0; i < 8; i++) { hb = (sum[i] >>> 24); sum[i] = (sum[i] & 0x00ffffff) + (block[i] & 0x00ffffff) + carry; hb = hb + (block[i] >>> 24) + (sum[i] >>> 24); sum[i] = (sum[i] & 0x00ffffff) | ((hb & 0xff) << 24); carry = ((hb & 0x100) != 0 ? 1 : 0); } /* update message hash */ gost_block_compress(block); } /** * Calculate message hash. * Can be called repeatedly with chunks of the message to be hashed. * * @param _msg message chunk * @param _size length of the message chunk */ function gost_update(_msg, _size) { var index = length & 31; var msg = _msg, pmsg = 0; var size = _size; var msg32 = new Array(8); length += size; /* fill partial block */ if (index != 0) { left = 32 - index; if (size < left) { for (var i = 0; i < size; i++) message[index + i] = msg[i]; return; } else for (var i = 0; i < left; i++) message[index + i] = msg[i]; /* process partitial block */ for (var i = 0; i < 8; i++) msg32[i] = ((message[4 * i] & 0xff)) | ((message[4 * i + 1] & 0xff) << 8) | ((message[4 * i + 2] & 0xff) << 16) | ((message[4 * i + 3] & 0xff) << 24); gost_compute_sum_and_hash(msg32); pmsg += left; size -= left; } while (size >= 32) { for (var i = 0; i < 8; i++) { message[4 * i] = msg[pmsg + 4 * i]; message[4 * i + 1] = msg[pmsg + 4 * i + 1]; message[4 * i + 2] = msg[pmsg + 4 * i + 2]; message[4 * i + 3] = msg[pmsg + 4 * i + 3]; msg32[i] = ((message[4 * i] & 0xff)) | ((message[4 * i + 1] & 0xff) << 8) | ((message[4 * i + 2] & 0xff) << 16) | ((message[4 * i + 3] & 0xff) << 24); } gost_compute_sum_and_hash(msg32); pmsg += 32; size -= 32; } if (size != 0) { for (var i = 0; i < size; i++) { message[i] = msg[pmsg + i]; } } } /** * Finish hashing and store message digest into given array. * * @param result calculated hash in binary form */ function gost_final() { var index = length & 31; var msg32 = new Array(8); /* pad the last block with zeroes and hash it */ if (index > 0) { for (var i = 0; i < 32 - index; i++) { message[index + i] = 0; } for (var i = 0; i < 8; i++) { msg32[i] = ((message[4 * i] & 0xff)) | ((message[4 * i + 1] & 0xff) << 8) | ((message[4 * i + 2] & 0xff) << 16) | ((message[4 * i + 3] & 0xff) << 24); } gost_compute_sum_and_hash(msg32); } /* hash the message length and the sum */ msg32[0] = (length << 3); msg32[1] = (length >>> 29); for (var i = 2; i < 8; i++) { msg32[i] = 0; } gost_block_compress(msg32); gost_block_compress(sum); } /* initialize the lookup tables */ function gost_init_table() { var ax, bx, cx, dx; for (var i = 0, a = 0; a < 16; a++) { ax = sbox[1][a] << 15; bx = sbox[3][a] << 23; cx = rol(sbox[5][a], 31); dx = sbox[7][a] << 7; for (var b = 0; b < 16; b++, i++) { gost_sbox[0][i] = ax | (sbox[0][b] << 11); gost_sbox[1][i] = bx | (sbox[2][b] << 19); gost_sbox[2][i] = cx | (sbox[4][b] << 27); gost_sbox[3][i] = dx | (sbox[6][b] << 3); } } } function gosthash(v) { var rx = new Array(8); var x = str2bytes(Utf8.encode(v)); gost_init(); gost_init_table(); gost_update(x, x.length); gost_final(); for (var i = 0; i < 8; i++) rx[i] = ch2hex(hash[i] & 0xff) + ch2hex((hash[i] >>> 8) & 0xff) + ch2hex((hash[i] >>> 16) & 0xff) + ch2hex((hash[i] >>> 24) & 0xff); return (rx.join("")); } print(gosthash(readline())); // output it while(str = readline()) { print(gosthash(str)); } |
-
upload with new input
-
result: Success time: 0.24s memory: 4988 kB returned value: 0
<se:UnifoTransferMsg xmlns:re="http://smev.gosuslugi.ru/rev111111" xmlns:re_1="http://roskazna.ru/xsd/PGU_DataRequest" xmlns:se="http://roskazna.ru/SmevUnifoService/" xmlns:se_1="http://rosrazna.ru/xsd/SmevUnifoService"> <re:Message> <re:Sender> <re:Code>UEK</re:Code> <re:Name>Портал УЭК</re:Name> </re:Sender> <re:Recipient> <re:Code>RKZN35001</re:Code> <re:Name>Казначейство России</re:Name> </re:Recipient> <re:Originator> <re:Code>UEK</re:Code> <re:Name>Портал УЭК</re:Name> </re:Originator> <re:TypeCode>GFNC</re:TypeCode> <re:Status>REQUEST</re:Status> <re:Date>2013-04-04T12:33:56.794Z</re:Date> <re:ExchangeType>2</re:ExchangeType> <re:CaseNumber>2f80d026-0168-411b-bef1-8cc7713f957e</re:CaseNumber> </re:Message> <re:MessageData> <re:AppData> <se_1:exportData> <re_1:DataRequest kind="CHARGE"> <PostBlock> <ID>d1cc8477-fa93-431e-8064-d1886205e5e2</ID> <TimeStamp>2013-04-04T12:33:56.394Z</TimeStamp> <SenderIdentifier>044525716</SenderIdentifier> </PostBlock> <Payers> <PayerIdentifier>112607620334</PayerIdentifier> </Payers> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> <DigestValue>UhygKe2kCe1UXYIC7OK99fxvuhZJrg6FrEyHbvkOq1k=</DigestValue> </Reference> </SignedInfo> <SignatureValue>4zDv8wVWqYvAiJwdLqhLt5rpsuOdFOgrQBb3EnKgKYTUjNUrGVYmLb5rtYxu3/0IZ8WP1/xHKupIAKMm2EQpeA==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIJbTCCCRygAwIBAgIKEThRYAAAAAAAHzAIBgYqhQMCAgMwggFWMRgwFgYFKoUDZAESDTExMTc3NDY0MjMwOTAxGjAYBggqhQMDgQMBARIMMDA3NzI2Njc3MjY4MSgwJgYDVQQJDB/QndCw0LPQvtGA0L3Ri9C5INC/0YDQvtC10LfQtCA1MRowGAYJKoZIhvcNAQkBFgtjYUBic3Mtcy5ydTELMAkGA1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC60LLQsDExMC8GA1UECgwo0J7QntCeICLQkdCh0KEt0JHQtdC30L7Qv9Cw0YHQvdC+0YHRgtGMIjEwMC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMTEwLwYDVQQDDCjQntCe0J4gItCR0KHQoS3QkdC10LfQvtC/0LDRgdC90L7RgdGC0YwiMB4XDTEzMDIyNTE1NDQwMFoXDTE0MDIyNTE1NTQwMFowggFmMRgwFgYFKoUDZAESDTEyMzQ1Njc4OTAxMjMxGjAYBggqhQMDgQMBARIMMDAxMjM0NTY3ODkwMRswGQYJKoZIhvcNAQkBFgx0ZXN0QHRlc3QucnUxCzAJBgNVBAYTAlJVMSEwHwYDVQQIHhgANwA3ACAEMwAuACAEHAQ+BEEEOgQyBDAxFTATBgNVBAceDAQcBD4EQQQ6BDIEMDEjMCEGA1UECh4aBB4EHgQeACAAIgQiBDUEQQRCBD4ERAREACIxIzAhBgNVBAMeGgQeBB4EHgAgACIEIgQ1BEEEQgQ+BEQERAAiMSkwJwYDVQQJHiAEIgQ1BEEEQgQ+BDIEMARPACAEQwQ7BDgERgQwACAAMTEZMBcGA1UEDB4QBBQEOARABDUEOgRCBD4EQDEjMCEGA1UEKh4aBCIENQRBBEIAIAQiBDUEQQRCBD4EMgQ4BEcxFTATBgNVBAQeDAQiBDUEQQRCBD4EMjBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABECVPK20VCcln6/ylnqlcUNiM8rVwKYEc11YS6JmlO8DxIB4b0SW4HcuLDAgNlCVmHA8tQ3A2Hk79fOXoWyZGMwwo4IFtDCCBbAwDgYDVR0PAQH/BAQDAgTwMEYGA1UdJQQ/MD0GBiqFA2RxAQYGKoUDZHECBgYqhQNkcgEGBiqFA2RyAgYHKoUDAgIiBgYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBQvgD2WwEgle22I4Qye3DvRu1kUWDCCAZcGA1UdIwSCAY4wggGKgBSPdjvcVrkuqr60sNc1WKok35d1nKGCAV6kggFaMIIBVjEYMBYGBSqFA2QBEg0xMTE3NzQ2NDIzMDkwMRowGAYIKoUDA4EDAQESDDAwNzcyNjY3NzI2ODEoMCYGA1UECQwf0J3QsNCz0L7RgNC90YvQuSDQv9GA0L7QtdC30LQgNTEaMBgGCSqGSIb3DQEJARYLY2FAYnNzLXMucnUxCzAJBgNVBAYTAlJVMRwwGgYDVQQIDBM3NyDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxMTAvBgNVBAoMKNCe0J7QniAi0JHQodChLdCR0LXQt9C+0L/QsNGB0L3QvtGB0YLRjCIxMDAuBgNVBAsMJ9Cj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDExMC8GA1UEAwwo0J7QntCeICLQkdCh0KEt0JHQtdC30L7Qv9Cw0YHQvdC+0YHRgtGMIoIQU8lwi7SUBYFKVEYhSTxw7TBWBgNVHR8ETzBNMCagJKAihiBodHRwOi8vY2EuYnNzLXMucnUvYnNzLXMyMDEyLmNybDAjoCGgH4YdaHR0cDovL2Jzcy1zLnJ1L2Jzcy1zMjAxMi5jcmwwZwYIKwYBBQUHAQEEWzBZMCwGCCsGAQUFBzAChiBodHRwOi8vY2EuYnNzLXMucnUvYnNzLXMyMDEyLmNydDApBggrBgEFBQcwAoYdaHR0cDovL2Jzcy1zLnJ1L2Jzcy1zMjAxMi5jcnQwKwYDVR0QBCQwIoAPMjAxMzAyMjUxNTQ0MDBagQ8yMDE0MDIyNTE1NDQwMFowVAYDVR0gBE0wSzAIBgYqhQNkcQEwCAYGKoUDZHECMAgGBiqFA2RyATAIBgYqhQNkcgIwCQYHKoUDAgIiBjAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDBuBgUqhQNkbwRlDGPQodGA0LXQtNGB0YLQstC+INGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtC00L/QuNGB0Lg6ICLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikwggHmBgUqhQNkcASCAdswggHXDGPQodGA0LXQtNGB0YLQstC+INGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtC00L/QuNGB0Lg6ICLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikMatCh0YDQtdC00YHRgtCy0L4g0KPQpjogItCj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgCAi0JrRgNC40L/RgtC+0J/RgNC+INCj0KYiINCy0LXRgNGB0LjQuCAxLjUMgYDQl9Cw0LrQu9GO0YfQtdC90LjQtSDQvdCwINGB0YDQtdC00YHRgtCy0L4g0K3Qnzog0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyMS0xODU5INC+0YIgMTcuMDYuMjAxMgyBgNCX0LDQutC70Y7Rh9C10L3QuNC1INC90LAg0YHRgNC10LTRgdGC0LLQviDQo9CmOiDQodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTE4MjIg0L7RgiAwMS4wNi4yMDEyMAgGBiqFAwICAwNBAKwvXv6sxplSF/8Ll8uXTRjcKLd/D/U3Aw1GW/OCMDzlF+NE4/sg4kvuQVgW4F2YUtlC+Z6N/Lq3huI6nQAhUpE=</X509Certificate> </X509Data> </KeyInfo> </Signature> </re_1:DataRequest> </se_1:exportData> </re:AppData> </re:MessageData> </se:UnifoTransferMsg>e2a2bbb6096eeaa51fa69f37471d89a813d547b21571069f7ff393726a0d16c4 2f8eda890ce2a9351ad674263204d3b07c651261eef7d72bba4bdd1439e0ee95 502e52a2c5fc63f4ccdb5900c341105bd31a75fa50470d785197c1cf567b864d 6328f41ab51a24689e0864d25a50b7a3b857283319124aad50fdee33c30282ed cc13b0f49baa4c1a3071171b54c91f5311ee16660e93d2e7800dfc488ab8b43e 80de3b70cb77aaef9195ee3a9bc00668316dd24078d7edabebd6164b7b878a0c a165e5cdcde8a0be707cf254fe66473afbdc04ed5532687271cf663c909f77b6 d0b9facfa4ddef3ebd183ac80ecf4fb82f98c597c77488bacf1aa8dffd1d284b 285f762eede18f5a65b26b8107a79e1345bde692f501e4a510262ec3d6f26271 59436bad7671b1c416e0dd94bcc49a70048fa1aa967e5bc79769c2de71da7d43 348e80e6079bbac83b3310cd79572544b98902bcef77927f56010e34d408e159 6328f41ab51a24689e0864d25a50b7a3b857283319124aad50fdee33c30282ed cc13b0f49baa4c1a3071171b54c91f5311ee16660e93d2e7800dfc488ab8b43e 90a7b140ba43df9ea112c7c1aaf55092b2782879f6212bb9c23d2cf8986ffc95 30e63218424641902bf5de7e109daa9c61ade0f5da84512df552b3e88eb1dc51 55405d1ec82ee80c15f6fca5ef6279bccd1149b8fe90bfb674b52cb8438302a4 b921f4c30bf103c74129a321621199a766c548acae944f06e8f8c14902f48ed1 5da42c03662135ba73fc7f8e1120ad542e1a10dc65c1751f1fa7749ab241fe89 2f42d898382dbf99181d17c0195d931dd1badcefae76067ed04636087fbc40c2 87d28b2900c8b921501a7041ee4becee8400ad5cae4f970f49fa5cf752f96512 01e11b517c88ff9420268e4379ee552209d1db3edc8b4b8ff17ed37da7cd8a94 5fbd4c21eb8ab4e86bdbee3c1ac864686c8352d4f342277ec40bd1f8ebf2c692 b0dcf0bc53fbf0c5002a59ca439c272161fab798b532e81573ba39338a94d338 6f3a520bf613edf3ec00a4f480797f856e76e85db1967787cb3d299e01db184b c9d0a123d81eeadd2a32db2ae540746bb3d62b886763c6fdd42ac0f9fd7a8e43 2c5683464d057b9e5e16cf95059087b579f50300ccdf6925b3fccdb787a187ea 7ff60411362e9c746a1b0eeae81955966c72d45f08dc1b846f9a4aa3a01498d9 b9c18796f94164db80f69bc7ee1c3d00e4023014ffc86f7b5db4cfb83c7ff003 e850e4262d68a4d779271c0d2fd4f22d865601aefcee82924f95aef59659e349 3a03e6fef192e8e98829490166619c0abfad376f9065e7eff1cf9b496882f465 4d34c67efedc8f986f719c0e0b7525b8845e85a0f8d29d68c8b4ba4ad559ab3f d93ba45bf8776f880b491bb38a73d58fcb1503db158ada30300be864afb19794 91a08b92e05ba10d442f64e666e464f313744943a0b9a82ddfc640bb76779775 ded1e3cf5533fad208b66faa36dbcd395b75a7e3d0a80a65b6b4871183b5c136 22d0be4a2edce857cd606b8798a46c6dfaac9892b2762bd504fb61afc87a629f 6bf451021ca878e54a2ffa88898738d8314d858781417e445cc97141a215162c 10d55e379e54743b5ae39ec09ce4d6a2f8609bc1b5231597cf1a023db15bf37b 1002e6a54155dc6f70d424ea2f571be97ad0a1237f7f205d754df057b95f6529 85da5ae491c399b6054607943eef6e0389e06e8633550baca59ff2cce836e5e3 ee49ae9c8a8662e92b47e33b074ae06da0bfd44947e01518462d230148a923a3 6c0b5488c04524ead78b5026b06786edff6f90103a55be3d390bc3261d079ee7 7dde58019d7e6f5de232b88d49075150805bc78d880f4b5016235ca3902f9658 d5c1867c6ecf795b97992870f395d0d592a63e42c2e0d73c9120f01a8f162b30 578947573bd5af1e55659b22549d1ebb205984a5052496435efaec90908afd6a acdfda64aa3973f6d9b0fc97cacfc8919401afd8249f1b8e81a81784b3c038ae 2befff92590f8c46989aff52b92970dd1551cb53ab4caf644e064513802315d4 750b73e84a035b0a9368957715c6bcdf07f2f445205dc82e393be4e357617515 a8e71271a6e4ee89a881091040415599df98cb0e2afcdd7e5d5f4ec5f4bab130 14c84fdc9a0c96f04f8f9c59b0ac1dc901abf7a48f08d8927ca84391b85a59d6 8d2f102398b088bc7c35a8151bbaf5705cecfe626d9a1cf4f54b795fba463739 009681b4f925a750ab6125893d1b4706a2a868e9c1b30e5a7dbc8d9775a516f9 bcd59a2a3ea4e2be781f4d94a17614b751077eb51264a83ec5225a35ecd18dfa ed04a299076f2ff22618258c06a3e0bd3c77c78fb0fd3a2b796a66ed17a58b41 9c78826062211842ed13326a8c5c1b0a644a86aa196bebf0352e3776e86dbfbb 2d1cc206d8f9db0a48a186f5685aeca27e3c45ac62b75dbea445670a118220f5 2c873ba69ac08fa1db4fa1ab3c10d4099e6ef308761ccc0fb8cbaec13bab5a86 d0635fc6c7127d3a50e513b43a83d5ef2eda2ed51aee57c85abbd29a5ed4d805
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
This is message, length=32 bytes
dff1030dc5c3d3338f739a5edfff07dd92958affc1cb8853a98c755efa85be86
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
a
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
еуые
483584f493473f53e0a90a0ff89c7f11628ab96e3305348dc03c37559e8e1c3c
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
a
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG
0511ec5dd4fb053876048864ef0768f2d0a2326aec700d2f8511ddc2f3e58a4c
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
The quick brown fox jumps over the lazy dog
e5cc9b9a625f73673d6f384307b7e47ddd9f42d68357512ed027b38191e10dd0
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
ОБЬЕДКИНАЕЖЕЧКИНААННАМАРИЯВАИДАСАРЕНОВНА31121960
0cd3b7b443fff71261fe9a3825237905da1a5661339c1849235b9e86a6cbe85f
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
Объедкина-Ёжечкина Анна-Мария Вайдасареновна, 31121960
efa5584b081ad4e3dc23372b14683c9f3d8f110b7efae22f5f877458f5896aad
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d
-
result: Success time: 0.04s memory: 4944 kB returned value: 0
Создание официального сайта Российской Федерации в сети «Интернет» для размещения информации о размещении заказов на поставки товаров, выполнение работ, оказание услуг для федеральных нужд, нужд субъектов Российской Федерации или муниципальных нужд ОПИСАНИЕ СИСТЕМЫ КЛАССИФИКАЦИИ И КОДИРОВАНИЯ Аннотация Целью данного документа является описание системы классификации и кодирования. В документе описана используемая при создании Общероссийского официального сайта нормативно-справочная информация (справочники, классификаторы). Задачи документа: • описать структуру справочников и классификаторов (поля, размерность, взаимосвязи); • описать механизм формального и логического контроля содержимого справочников и классификаторов; • описать источники загрузки данных в справочники и классификаторы и периодичность обновлений. Настоящий Документ разработан в соответствии с положениями следующих нормативных документов: • РД 50-34.698-90 «Методические указания. Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Автоматизированные системы. Требования к содержанию документов»; • Технические требования к конкурсной документации на открытый конкурс «Создание официального сайта Российской Федерации в сети «Интернет» для размещения информации о размещении заказов на поставки товаров, выполнение работ, оказание услуг для федеральных нужд, нужд субъектов Российской Федерации или муниципальных нужд» (номер открытого конкурса: 1601-09-10) от 12 октября 2010 г. Содержание 1 Термины и определения 6 2 Перечень зарегистрированных классификаторов, используемых AC 7 2.1 Общероссийские классификаторы 7 2.2 Международные классификаторы 7 2.3 Ведомственные классификаторы 7 2.4 Системные классификаторы 7 3 СТРУКТУРА СПРАВОЧНИКОВ И КЛАССИФИКАТОРОВ 9 3.1 Структура общероссийских классификаторов в Подсистеме ведения НСИ 9 3.1.1 Структура Общероссийского классификатора валют (ОКВ) в подсистеме ведения НСИ 9 3.1.2 Структура Общероссийского классификатора единиц измерения (ОКЕИ) в подсистеме ведения НСИ 10 3.2 Структура ведомственных классификаторов и справочников 12 3.2.1 Структура Классификатора адресов России (КЛАДР) 12 3.2.2 Структура классификатора кодов бюджетной классификации (КБК) 13 3.2.3 Структура справочника Номенклатура 14 3.2.4 Структура справочника «Перечень статей и подстатей классификации операций сектора государственного управления (КОСГУ)» 15 3.2.5 Структура справочника «Лицевые счета» 16 3.3 Структура локальных справочников 18 3.3.1 Структура справочника «Способы размещения заказа» 18 3.3.2 Структура справочника «Особенности размещения заказа» 19 3.3.3 Структура справочника «Преференции размещения заказа» 20 3.3.4 Структура справочника «Критерии оценки» 21 3.3.5 Структура справочника «Причины отказа в допуске» 25 3.3.6 Структура справочника «Основания для отказа от заключения контракта» 26 3.3.7 Структура справочника «Комиссия (Роли)» 27 3.3.8 Структура справочника «Типы организации» 27 3.3.9 Структура справочника «Уровни госуправления» 27 3.3.10 Структура справочника «Уровни бюджетов» 28 3.3.11 Структура справочника «Виды внебюджетных средств» 28 3.3.12 Структура справочника «Статусы поставщика» 29 3.3.13 Структура справочника «Электронные площадки» 29 3.3.14 Структура справочника «Внешние системы размещения заказа» 30 3.3.15 Структура справочника «Индексы-дефляторы» 31 4 МЕХАНИЗМ ФОРМАЛЬНОГО И ЛОГИЧЕСКОГО КОНТРОЛЯ СОДЕРЖИМОГО СПРАВОЧНИКОВ И КЛАССИФИКАТОРОВ 35 5 ИСТОЧНИКИ ЗАГРУЗКИ ДАННЫХ В СПРАВОЧНИКИ И КЛАССИФИКАТОРЫ И ПЕРИОДИЧНОСТЬ ОБНОВЛЕНИЙ 36 5.1 Загрузка общероссийских классификаторов 36 5.1.1 Загрузка Общероссийского классификатора валют (ОКВ) в подсистему ведения НСИ 36 5.1.2 Загрузка Общероссийского классификатора единиц измерения (ОКЕИ) в подсистему ведения НСИ 38 5.1 Загрузка ведомственных классификаторов 40 5.1.1 Загрузка Классификатора адресов России (КЛАДР) 40 5.2 Загрузка локальных справочников 47 5.2.1 Загрузка справочника «Способы размещения заказа» 47 5.2.2 Загрузка справочника « Особенности размещения заказа» 48 5.2.3 Загрузка справочника « Преференции размещения заказа» 50 5.2.4 Загрузка справочника «Причины отказа в допуске» 52 5.2.5 Загрузка справочника «Основания для отказа от заключения контракта» 52 5.2.6 Загрузка справочника «Комиссия (Роли)» 53 5.2.7 Загрузка справочника «Типы организации» 53 5.2.8 Загрузка справочника «Уровни госуправления» 54 5.2.9 Загрузка справочника «Уровни бюджетов» 55 5.2.10 Загрузка справочника «Виды внебюджетных средств» 55 5.2.11 Загрузка справочника «Статусы поставщика» 57 5.2.12 Загрузка справочника «Электронные площадки» 57 5.2.13 Загрузка справочника «Внешние системы размешения заказа» 58 1 ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ Термин Определение Закон № 94-ФЗ Федеральный закон от 21 июля 2005 г. № 94-ФЗ «О размещении заказов на поставки товаров, выполнение работ, оказание услуг для государственных и муниципальных нужд» (в редакции от 08.05.2009) Минэкономразвития России Уполномоченный Правительством Российской Федерации федеральный орган исполнительной власти по ведению официального сайта Российской Федерации в сети «Интернет» для размещения информации о размещении заказов на поставки товаров, выполнение работ, оказание услуг для федеральных нужд, нужд субъектов Российской Федерации или муниципальных нужд (далее – официальный сайт) в соответствии с Законом 94-ФЗ и привлекающий организацию для оказания услуг по обслуживанию и обеспечению функционирования официального сайта (далее – оператор официального сайта) Официальный сайт Официальный сайт Российской Федерации в сети «Интернет» для размещения информации о размещении заказов на поставки товаров, выполнение работ, оказание услуг для федеральных нужд, нужд субъектов Российской Федерации и муниципальных нужд. Проект Комплексный проект создания Общероссийского официального сайта и смежных систем. Подсистема ведения единого фонда нормативно-справочной информации (далее - Подсистема ведения НСИ) Функциональная подсистема официального сайта обеспечивающая ведение единого фонда нормативно-справочной информации, используемой на официальном сайте. АС Автоматизированная система. 2 ПЕРЕЧЕНЬ ЗАРЕГИСТРИРОВАННЫХ КЛАССИФИКАТОРОВ, ИСПОЛЬЗУЕМЫХ AC 2.1 Общероссийские классификаторы На официальном сайте используются следующие зарегистрированные общероссийские классификаторы: • ОКВ (Общероссийский классификатор валют); • ОКЕИ (Общероссийский классификатор единиц измерения) 2.2 Международные классификаторы Зарегистрированные международные классификаторы на Официальном сайте не используются. 2.3 Ведомственные классификаторы На официальном сайте используются следующие ведомственные классификаторы и справочники: • КЛАДР (Классификатор адресов России) – ведение осуществляет ФНС России; • КБК (Коды бюджетной классификации - расходы) – ведение осуществляет Минфин России; • Номенклатура – ведение осуществляет Минэкономразвития России; • Перечень статей и подстатей классификации операций сектора государственного управления (КОСГУ) - ведение осуществляет Минфин России; • Лицевые счета. 2.4 Системные классификаторы На официальном сайте используются следующие системные классификаторы: • Справочник «Способы размещения заказа»; • Справочник «Особенности размещения заказа»; • Справочник «Преференции размещения заказа»; • Справочник «Критерии оценки»; • Справочник «Причины отказа в допуске»; • Справочник «Основания для отказа от заключения контракта»; • Справочник «Комиссия (роли)»; • Справочник «Типы организации»; • Справочник «Уровни госуправления»; • Справочник «Уровни бюджетов»; • Справочник «Виды внебюджетных средств» • Справочник «Статусы поставщика» • Справочник «Электронные площадки» • Справочник «Внешние системы размещения заказа» • Справочник «Индексы-дефляторы» 3 СТРУКТУРА СПРАВОЧНИКОВ И КЛАССИФИКАТОРОВ 3.1 Структура общероссийских классификаторов в Подсистеме ведения НСИ 3.1.1 Структура Общероссийского классификатора валют (ОКВ) в подсистеме ведения НСИ Общероссийский классификатор валют (ОКВ) входит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) Российской Федерации. ОКВ гармонизирован с Международным стандартом ИСО 4217-2000 "Коды для представления валют и фондов" и Межгосударственным классификатором валют МК(ИСО 4217)003-97. ОКВ предназначен для использования при прогнозировании внешних экономических связей, учете валютных поступлений и платежей, бухгалтерском и статистическом учете, оперативной отчетности по операциям, связанным с международными расчетами, контроле за соблюдением договорной и платежной дисциплины. Объектами классификации ОКВ являются валюты – денежные единицы стран и территорий. Таблица 1 Состав реквизитов ОКВ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Код валюты Цифровой код строка(3) Уникальный в период действия Нет Цифровой код валюты Буквенный код строка(3) Нет Буквенный код валюты Наименование строка(35) Нет Наименование валюты Актуальность целое число Да Системный, 1 – действующий, 0 -иначе 3.1.2 Структура Общероссийского классификатора единиц измерения (ОКЕИ) в подсистеме ведения НСИ Общероссийский классификатор единиц измерения (ОКЕИ) входит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) Российской Федерации. ОКЕИ предназначен для использования при решении задач количественной оценки технико-экономических и социальных показателей в целях осуществления государственного учета и отчетности, анализа и прогнозирования развития экономики, обеспечения международных статистических сопоставлений, осуществления внутренней и внешней торговли, государственного регулирования внешнеэкономической деятельности и организации таможенного контроля. Объектами классификации в ОКЕИ являются единицы измерения, используемые в этих сферах деятельности. Таблица 2 Состав реквизитов разделов ОКЕИ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект раздела ОКЕИ Код строка(1) Да Код раздела Наименование строка(1000) Да Наименование раздела Таблица 3 Состав реквизитов групп ОКЕИ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект группы ОКЕИ Наименование строка(1000) Да Наименование группы Таблица 4 Состав реквизитов ОКЕИ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект классификатора ОКЕИ Код ОКЕИ строка(3) Да Код ОКЕИ Наименование строка(1000) Да Полное наименование единицы измерения Код раздела целое число Нет Код раздела единицы измерения Код группы целое число Нет Код группы единицы измерения Национальное условное обозначение строка(30) Нет Национальное условное обозначение единицы измерения Международное условное обозначение строка(30) Нет Международное условное обозначение единицы измерения Национальное кодовое буквенное обозначение строка(30) Нет Национальное кодовое буквенное обозначение единицы измерения Международное кодовое буквенное обозначение строка(30) Нет Международное кодовое буквенное обозначение единицы измерения Актуальность целое число Нет Системный , 1-актуальный, иначе-исторический 3.2 Структура ведомственных классификаторов и справочников 3.2.1 Структура Классификатора адресов России (КЛАДР) Классификатор адресов России является ведомственный классификатором ФНС России. На Официальном сайте используются объекты КЛАДР до пятого уровня включительно (до улиц). Классификатора используется с целью упростить ввод адресов и уменьшить количество ошибок ввода. Так же, связь объекта КЛАДР с объектом ОКАТО позволяет обеспечить поиск по ОКАТО, в том числе и с группировкой. Таблица 5 Описание реквизитов КЛАДР в Подсистеме ведения НСИ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект КЛАДРа Код строка(20) Код, уникальный в период действия Нет Код КЛАДР Код ОКАТО строка(20) Нет Почтовый индекс строка(6) Нет Почтовый индекс объекта КЛАДР Полное наименование строка(200) Нет Полное наименование объекта КЛАДР Краткое наименование строка(100) Нет Сокращенное наименование объекта КЛАДР Тип объекта строка(1) Нет Сокращенное наименование типа объекта Код родителя целое число Нет Формируется по коду (при загрузке) Признак центра целое число Да Для корректности адреса Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.2.2 Структура классификатора кодов бюджетной классификации (КБК) Код бюджетной классификации обновляется раз в год. Классификация расходов бюджетов (далее - классификация расходов) представляет собой группировку расходов бюджетов всех уровней и отражает направление бюджетных средств на выполнение единицами сектора государственного управления и местного самоуправления основных функций, решение социально-экономических задач. Классификация расходов состоит из: • кода главного распорядителя бюджетных средств; • кода раздела, подраздела, целевой статьи и вида расходов; • кода классификации операций сектора государственного управления, относящихся к расходам бюджетов. Код классификации расходов занимает 20 знаков и имеет следующую структуру: код главного распорядителя бюджетных средств - 3 знака, раздел - 2 знака, подраздел - 2 знака, код целевой статьи, включающий программный срез, - 7 знаков, код вида расходов - 3 знака, код классификации операций сектора государственного управления, относящихся к расходам бюджетов - 3 знака. Главный распорядитель бюджетных средств Раздел Подраздел Целевая статья Вид расходов Статья (подстатья) классификации операций сектора государственного управления, относящаяся к расходам бюджетов Программа Подпрограмма 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Таблица 6 Описание реквизитов классификатора КБК Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект КБК Код родителя целое число Нет Код родительской позиции Наименование строка(256) Нет Полное наименование объекта КБК Код строка(30) Нет Код бюджетной классификации Актуальность целое число Нет Системный , 1-актуальный, иначе-исторический 3.2.3 Структура справочника Номенклатура Справочник «Номенклатура» содержит перечень товаров, работ, услуг для нужд заказчиков, используемых на Официальном сайте. Справочник имеет иерархическую структуру. Справочник ведется Минэкономразвития России. Таблица 7 Описание реквизитов Номенклатура в Подсистеме ведения НСИ Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект Номенклатуры Код родителя целое число Код родительской позиции Наименование строка(300) Да Код строка(20) Код, уникальный в период действия Да Номенклатурный код Актуальность целое число Нет Системный , 1-актуальный, иначе-исторический Возможность выбора в интерфейсе целое число Нет Системный , 1-код Номенклатуры можно выбрать в интерфейсе, иначе-нельзя выбрать. Уровень в дереве целое число Уровень позиции объекта в дереве. 3.2.4 Структура справочника «Перечень статей и подстатей классификации операций сектора государственного управления (КОСГУ)» Классификация операций сектора государственного управления является группировкой операций в зависимости от их экономического содержания. В рамках данной классификации операции сектора государственного управления разделены на текущие (доходы и расходы), инвестиционные (операции с нефинансовыми активами) и финансовые (операции с финансовыми активами и обязательствами) из следующих групп: • 100 Доходы; • 200 Расходы; • 300 Поступление нефинансовых активов; • 400 Выбытие нефинансовых активов; • 500 Поступление финансовых активов; • 600 Выбытие финансовых активов; • 700 Увеличение обязательств; • 800 Уменьшение обязательств. Группы детализируются статьями и подстатьями. Перечни операций, приведенные в рамках соответствующих статей (подстатей), закрытыми не являются и не исключают возможности отражения иных аналогичных по экономическому содержанию операций. Таблица 8 Состав реквизитов справочника «Перечень статей и подстатей КОСГУ» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект статьи (подстатьи) Код для кодовой зоны строка(3) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данный перечень Наименование строка(350) Нет Наименование перечня статей и подстатей КОСГУ Порядковый номер целое число Нет Порядковый номер перечня в списке Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.2.5 Структура справочника «Лицевые счета» Справочник содержит лицевые счета участников бюджетного процесса всех уровней бюджетной системы РФ. Таблица 9 Состав реквизитов справочника «Лицевые счета» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект счета Номер лицевого счета строка(11) Уникальный Да Номер лицевого счета Дата архивирования Дата/время Нет Дата архивирования лицевого счета Статус строка(3) Да Статус лицевого счета Дата создания Да Дата создания лицевого счета Код ГРБС строка(3) Да Код главного распорядителя бюджетных средств Наименование ГРБС строка(2000) Да Наименование главного распорядителя бюджетных средств Адрес органа ФК по месту обслуживания строка(2000) Да Адрес органа Федерального Казначейства по месту обслуживания Код органа ФК строка(4) Да Код органа Федерального Казначейства Адрес органа ФК, открытого главному распорядителю строка(4000) Да Адрес органа Федерального Казначейства, открытого главному распорядителю Код органа ФК, открытого главному распорядителю строка(4) Да Код органа Федерального Казначейства, открытого главному распорядителю Наименование органа ФК открытого главному распорядителю строка(2000) Да Наименование органа Федерального Казначейства, открытого главному распорядителю Полное наименование органа ФК строка(2000) Да Полное наименование органа Федерального Казначейства Код УБП строка(5) Да Код участника бюджетного процесса Полное наименование УБП строка(2000) Да Полное наименование участника бюджетного процесса Дата обновления Дата/время Нет Дата обновления объекта секта 3.3 Структура локальных справочников 3.3.1 Структура справочника «Способы размещения заказа» Значения из этого справочника используются при размещении заказа. Расширение списка значений может потребовать изменений на программном уровне. Справочник имеет иерархическую структуру (два уровня). Таблица 10 Состав реквизитов справочника «Способы размещения заказа» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ,Уникальный Да Уникальное число, идентифицирующее объект способа Тип способа Строка(2) Уникальный Нет OK - открытый конкурс OA - открытый аукцион ZK - запрос котировок PO - предварительный отбор SZ - сообщение о заинтересованности в проведении открытого конкурса EA - открытый аукцион в открытой форме Код способа Строка(3) Уникальный Нет Код способа размещения Код для кодовой зоны Строка(3) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данный способ Актуальность целое число Да Системный , 1-актуальный, иначе-исторический Наименование строка(500) Нет Наименование способа размещения Описание строка(2000) Нет Описание способа размещения Порядковый номер целое число уникальный Нет Порядковый номер способа в списке для отображения Группы критериев оценки связь Нет Множественная связь со справочником «Группы критериев оценки» 3.3.2 Структура справочника «Особенности размещения заказа» Таблица 11 Состав реквизитов справочника «Особенности размещения заказа» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект особенности Наименование строка(350) Уникальный в период действия Нет Наименование особенности Тип целое число Нет Принимает значения 'F' («Особенность») Способы размещения связь Нет Множественная связь со справочником «Способы размещения заказа» Особенность доступна для выбора целое число Нет 1 = true, 0/NULL = false Краткое наименование строка(20) Нет Краткое наименование особенности Код способа Строка(3) Нет Код способа размещения Порядковый номер целое число уникальный Да Порядковый номер особенности в списке для отображения Актуальность целое число Да Системный , 1-актуальный, иначе-исторический Описание строка(2000) Нет Описание особенности Варианты применения особенности Строка(1) Нет U - Увеличение; D – Уменьшение 3.3.3 Структура справочника «Преференции размещения заказа» Таблица 12 Состав реквизитов справочника «Преференции размещения заказа» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект преференции Наименование строка(350) Уникальный в период действия Нет Наименование преференции Тип целое число Нет Принимает значения 'P' (“Преференция”) Способы размещения связь Нет Множественная связь со справочником «Способы размещения заказа» Преференция доступна для выбора целое число Нет 1 = true, 0/NULL = false Преференция Число с плавающей точкой Нет Значение в процентах для преференции Краткое наименование строка(20) Нет Краткое наименование преференции Код способа Строка(3) Нет Код способа размещения Порядковый номер целое число уникальный Да Порядковый номер преференции в списке для отображения Актуальность целое число Да Системный , 1-актуальный, иначе-исторический Описание строка(2000) Нет Описание преференции Варианты применения преференции Строка(1) Нет U - Увеличение; D – Уменьшение 3.3.4 Структура справочника «Критерии оценки» Справочник «Критерии оценки» в Подсистеме ведения НСИ представляется в виде следующих таблиц: • Критерии оценки – содержит список критериев оценки, используемых на Официальном сайте; Таблица 13 Состав таблицы «Критерии оценки» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект критерия Код способа размещения заказа целое число Внешний ключ Нет Ссылка на справочник Способы размещения заказа Наименование строка(256) Уникальный в период действия Да Наименование критерия Порядковый номер целое число уникальный Нет Порядковый номер критерия в списке для отображения Наличие подкритериев целое число Нет 1 = true, 0/NULL = false 5-символьный код строка(5) Нет 5-символьный код критерия Описание строка(2000) Нет Описание критерия Актуальность целое число Да Системный , 1-актуальный, иначе-исторический Код особенности задания критериев целое число Внешний ключ Нет Ссылка на справочник Особенности задания критериев 3-символьный код строка(3) Нет 3-символьный код критерия Числовой код целое число Нет Числовой код критерия Необходимость экспертной оценки целое число Да 1 = true, 0/NULL = false • Особенности задания критериев – содержит список особенностей задания критериев; Таблица 14 Состав таблицы «Особенности задания критериев» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект особенности Код способа размещения заказа целое число Внешний ключ Нет Ссылка на справочник Способы размещения заказа Наименование строка(1024) Уникальный в период действия Да Наименование особенности Порядковый номер целое число уникальный Да Порядковый номер особенности в списке для отображения Признак выбора по умолчанию целое число 1 = true, 0/NULL = false Актуальность целое число Да Системный , 1-актуальный, иначе-исторический код строка(8) Нет Символьный код особенности • Группы критериев – содержит список групп, в которые объединяются критерии оценки, для упрощения управления отдельными критериями; Таблица 15 Состав таблицы Группы критериев Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект группы Код строка(8) Да Код группы критериев Наименование строка(1024) Да Наименование группы критериев Актуальность целое число Да Системный , 1-актуальный, иначе-исторический • Состав групп – содержит информацию о составе групп критериев – какие критерии входят в группу, один критерий может входить в несколько групп; Таблица 16 Состав таблицы Состав групп Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект группы Код критерия оценки целое число Внешний ключ Да Ссылка на справочник Критерии оценки Код группы критериев оценки целое число Внешний ключ Да Ссылка на справочник Группы критериев оценки Порядковый номер целое число уникальный Нет Порядковый номер для отображения Актуальность целое число Да Системный , 1-актуальный, иначе-исторический • Критерии оценки-связи – содержит информацию, какая из групп критериев связана с каким способом размещения. Таблица 17 Состав таблицы Критерии оценки-связи Реквизит Тип Ключ, уникальность Обязательность Комментарий Код способа размещения заказа целое число Внешний ключ Да Ссылка на справочник Способы размещения заказа Код группы критериев оценки целое число Внешний ключ Да Ссылка на справочник Группы критериев оценки Связи между описанными таблицами показаны на Логическая структура справочников Способы размещения заказа, Особенности размещения заказа, Критерии оценки Рисунок 1 Логическая структура справочников Способы размещения заказа, Особенности размещения заказа, Критерии оценки 3.3.5 Структура справочника «Причины отказа в допуске» Таблица 18 . Состав реквизитов справочника «Причины отказа в допуске» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект причины Наименование строка(250) Уникальный в период действия Да Наименование причины Описание строка(500) Нет Описание причины Порядковый номер целое число уникальный Нет Порядковый номер для отображения Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.6 Структура справочника «Основания для отказа от заключения контракта» Таблица 19 Состав реквизитов справочника «Основания для отказа от заключения контракта» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект основания Наименование строка(512) Уникальный в период действия Нет Наименование основания Описание строка(500) Нет Наименование основания Порядковый номер целое число уникальный Нет Порядковый номер для отображения Номер редакции целое число Нет Номер редакции основания Исторический идентификатор целое число Нет Наименование основания Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.7 Структура справочника «Комиссия (Роли)» Таблица 20 Состав реквизитов справочника «Комиссия (Роли)» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект роли Наименование строка(50) Уникальный в период действия Да Наименование роли в комиссии Порядковый номер целое число Уникальный Нет Порядковый номер для отображения Количество голосов целое число Нет Количество голосов (по умолчанию) Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.8 Структура справочника «Типы организации» Таблица 21 Состав реквизитов справочника «Типы организации» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект типа Наименование строка(50) Уникальный в период действия Нет Наименование типа организации Описание строка(200) Нет Описание типа организации 3.3.9 Структура справочника «Уровни госуправления» Таблица 22 Состав реквизитов справочника «Уровни госуправления» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект уровня Наименование строка(200) Уникальный в период действия Нет Наименование уровня госуправления 3.3.10 Структура справочника «Уровни бюджетов» Таблица 23 Состав реквизитов справочника «Уровни бюджетов» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект уровня Код для кодовой зоны строка(4) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данный уровень Наименование строка(350) Нет Наименование уровня бюджета Порядковый номер целое число Нет Порядковый номер уровня в списке Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.11 Структура справочника «Виды внебюджетных средств» Таблица 24 Состав реквизитов справочника «Виды внебюджетных средств» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект вида Код для кодовой зоны строка(4) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данный вид Наименование строка(350) Нет Наименование вида внебюджетных средств Порядковый номер целое число Нет Порядковый номер вида в списке Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.12 Структура справочника «Статусы поставщика» Таблица 25 Состав реквизитов справочника «Статусы поставщика» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект вида Код для кодовой зоны строка(4) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данный статус Наименование строка(350) Нет Наименование статуса поставщика Порядковый номер целое число Нет Порядковый номер статуса в списке Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.13 Структура справочника «Электронные площадки» Таблица 26 Состав реквизитов справочника «Электронные площадки» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект площадки Наименование строка(20) Уникальный в период действия Да Наименование электронной площадки Описание строка(200) Нет Описание площадки Код строка(20) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данная площадка Телефон строка(30) Да Телефон площадки Адрес строка(50) Да Адрес электронной площадки в сети Интернет Email строка(50) Да Адрес электронной почты площадки Is_Aсtual целое число Да Системный , 1-актуальный, иначе-исторический 3.3.14 Структура справочника «Внешние системы размещения заказа» Таблица 27 Состав реквизитов справочника «Внешние системы размещения заказа» Реквизит Тип Ключ, уникальность Обязательность Комментарий ID объекта целое число Ключ, уникальный Да Уникальное число, идентифицирующее объект системы Наименование строка(20) Уникальный в период действия Да Наименование внешней системы размещения заказа Описание строка(200) Нет Описание внешней системы размещения заказа Код строка(20) Уникальный Нет Код для кодовой зоны документов, в которых упоминается данная система Телефон строка(30) Да Телефон внешней системы размещения заказа Адрес строка(50) Да Адрес внешней системы размещения заказа в сети Интернет Email строка(50) Да Адрес электронной почты внешней системы размещения заказа Актуальность целое число Да Системный , 1-актуальный, иначе-исторический 3.3.15 Структура справочника «Индексы-дефляторы» Справочник «Индексы-дефляторы» содержит значения индексов-дефляторов и цен (максимальных, минимальных) для видов/групп номенклатуры товаров, работ и услуг закупаемых для государственных и муниципальных нужд (продукции). Иерархия видов/групп номенклатуры товаров, работ и услуг справочника определяется справочником ОКДП («Номенклатура товаров, работ и услуг»). В части хранения натуральных, стоимостных и ценовых единиц справочник ссылается на справочник ОКЕИ («Классификатор единиц измерения»). Справочник имеет двухуровневую структуру – «Справочник индексы-дефляторы» и «Позиции справочника индексы-дефляторы». Диаграмма структуры справочника «Индексы-дефляторы» и его связей представлена на Рисунок 2. Таблица 28. Состав реквизитов таблицы «Справочник индексы-дефляторы» Реквизит Тип Ключ, уникальность Обязательность Комментарий Идентификатор Целое число(20) Ключ, Уникальный Да Статус Строка(3) Нет F- формирование PP- предварительный прогноз U- уточнение P - прогноз A – архивный Год Целое число(4) Нет Исторический идентификатор Целое число(20) Нет Идентифицирует объект в разных версиях Версия Целое число(20) Нет Рисунок 2 Справочник «Индексы-дефляторы» Таблица 29 Состав реквизитов таблицы «Позиции справочника индексы-дефляторы» Реквизит Тип Ключ, уникальность Обязательность Комментарий Идентификатор Целое число(20) Ключ, Уникальный Да Идентификатор натуральных единиц Целое число(10) Ключ Нет Идентификатор ОКДП Целое число(20) Ключ Нет Идентификатор стоимостных единиц Целое число(10) Ключ Нет Идентификатор справочника Целое число(20) Ключ Нет Идентификатор ценовых единиц Целое число(10) Ключ Нет Натуральные единицы измерения Целое число(1) Нет Комментарий Строка(2000) Нет Целое число Целое число(1) Да Требуется ли округление Признак группы Целое число(1) Да Исторический идентификатор Целое число(20) Нет Идентифицирует объект в разных версиях Версия Целое число(20) Нет 4 МЕХАНИЗМ ФОРМАЛЬНОГО И ЛОГИЧЕСКОГО КОНТРОЛЯ СОДЕРЖИМОГО СПРАВОЧНИКОВ И КЛАССИФИКАТОРОВ Формальный контроль при загрузке данных в классификаторы и справочники Подсистемы ведения НСИ осуществляется с использованием средств контроля типов данных и связей между таблицами СУБД ORACLE. Дополнительный логический контроль обеспечивается средствами Подсистемы ведения НСИ. В соответствии с описанием структуры классификатора (справочника) в Подсистеме ведения НСИ реализуются следующие дополнительные контроли: • если в структуре классификатора (справочника) поле указано как уникальное, то проверяется уникальность соответствующего реквизита; • если в структуре классификатора (справочника) поле указано как уникальное в период действия, то проверяется уникальность соответствующего реквизита на любую фиксированную дату; Дополнительно осуществляются проверки контрольного числа для классификаторов и справочников при кодировании которых используется контрольное число. 5 ИСТОЧНИКИ ЗАГРУЗКИ ДАННЫХ В СПРАВОЧНИКИ И КЛАССИФИКАТОРЫ И ПЕРИОДИЧНОСТЬ ОБНОВЛЕНИЙ 5.1 Загрузка общероссийских классификаторов 5.1.1 Загрузка Общероссийского классификатора валют (ОКВ) в подсистему ведения НСИ 5.1.1.1 Описание исходных данных для первоначальной загрузки и последующего обновления справочника Первоначальная загрузка осуществляется из файла OKVDBF.dbf (Таблица 30), который содержит актуальную информацию по объектам OKВ. Обновление осуществляет из файла OKVIZM.dbf (Таблица 31), который содержит только изменения объектов (добавление, изменение реквизитов, аннулирование). Состав полей в обоих файлах совпадает. Частота обновления данных – при внесении изменений в справочник ОКВ (Росстат). Меняется редко. Таблица 30 Структура записи файла OKV.dbf Обозначение поля Тип поля Назначение поля ISO_DIG CHAR(3) Цифровой код валюты ISO_LAT3 CHAR(3) Буквенный код валюты NAME CHAR(250) Наименование валюты NOMDESCR CHAR(250) Краткое наименование стран и территорий NOMAKT CHAR(3) Номер изменения STATUS NUMERIC(20,5) Тип изменения (0-первоначальное значение, 2-изменить, 3-аннулировать) DATA_UPD DATE Дата изменения Таблица 31 Структура записи файла OKVIZM.dbf Обозначение поля Тип поля Назначение поля ISO_DIG CHAR(3) Цифровой код валюты ISO_LAT3 CHAR(3) Буквенный код валюты NAME CHAR(250) Наименование валюты NOMDESCR CHAR(250) Краткое наименование стран и территорий NOMAKT CHAR(3) Номер изменения STATUS NUMERIC(20,5) Тип изменения (1-
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d 46788bcde9469364ec34496779574539c6df04536e77f44ba1ead3d967a29707
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
a
d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314dd
-
result: Success time: 0.02s memory: 5120 kB returned value: 0
abc
e2778f7cbd0af980ef9bf16a4ad0cc11ef006d6fe826cc715374973c0beff0bd
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
a
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
abc
f3134348c44fb1b2a277729e2285ebb5cb5e0f29c975bc753b70497c06a4d51d
-
result: Success time: 0.04s memory: 5396 kB returned value: 0
a abc message digest ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 12345678901234567890123456789012345678901234567890123456789012345678901234567890 This is message, length=32 bytes Suppose the original message has length = 50 bytes
d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314dd f3134348c44fb1b2a277729e2285ebb5cb5e0f29c975bc753b70497c06a4d51d ad4434ecb18f2c99b60cbe59ec3d2469582b65273f48de72db2fde16a4889a4d 95c1af627c356496d80274330b2cff6a10c67b5f597087202f94d06d2338cf8e cc178dcad4df619dcaa00aac79ca355c00144e4ada2793d7bd9b3518ead3ccd3 b1c466d37519b82e8319819ff32595e047a28cb6f83eff1c6916a815a637fffa 8378feee8cbd528d6c98989adabbf9ff9cd2e7d1f0a980b1175d0d4201299d02
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
abc
e2778f7cbd0af980ef9bf16a4ad0cc11ef006d6fe826cc715374973c0beff0bd
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
aabc
e71c61c6c933d59e23bc14102d755e295149a3b23a7eef1b40ce87fc5b1aa366
-
result: Success time: 0.02s memory: 5076 kB returned value: 0
aa
d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314dd
-
result: Success time: 0.03s memory: 5520 kB returned value: 0
a abc message digest ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 12345678901234567890123456789012345678901234567890123456789012345678901234567890 This is message, length=32 bytes Suppose the original message has length = 50 bytes UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy cog
ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8d d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314dd f3134348c44fb1b2a277729e2285ebb5cb5e0f29c975bc753b70497c06a4d51d ad4434ecb18f2c99b60cbe59ec3d2469582b65273f48de72db2fde16a4889a4d 95c1af627c356496d80274330b2cff6a10c67b5f597087202f94d06d2338cf8e cc178dcad4df619dcaa00aac79ca355c00144e4ada2793d7bd9b3518ead3ccd3 b1c466d37519b82e8319819ff32595e047a28cb6f83eff1c6916a815a637fffa 471aba57a60a770d3a76130635c1fbea4ef14de51f78b4ae57dd893b62f55208 53a3a3ed25180cef0c1d85a074273e551c25660a87062a52d926a9e8fe5733a4 77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294 a3ebc4daaab78b0be131dab5737a7f67e602670d543521319150d2e14eeec445


