Notes
Заметки JavaScript
Генерация криптографически стойкого случайного числа:
function createClientNonce(len) { var arr = new Uint8Array((len || 40) / 2); window.crypto.getRandomValues(arr); return Array.from(arr, dec2hex).join('') } function dec2hex(dec) { return ('0' + dec.toString(16)).substr(-2) }
Как сконвертировать HEX строку в BIN на js:
function hex2bin (s) { // discuss at: http://locutus.io/php/hex2bin/ // original by: Dumitru Uzun (http://duzun.me) // example 1: hex2bin('44696d61') // returns 1: 'Dima' // example 2: hex2bin('00') // returns 2: '\x00' // example 3: hex2bin('2f1q') // returns 3: false var ret = [] var i = 0 var l s += '' for (l = s.length; i < l; i += 2) { var c = parseInt(s.substr(i, 1), 16) var k = parseInt(s.substr(i + 1, 1), 16) if (isNaN(c) || isNaN(k)) return false ret.push((c << 4) | k) } return String.fromCharCode.apply(String, ret) }
Пример switch case на js:
function formatAlgo(algo) { formattedAlgo = ''; switch (algo) { case 'SHA1': formattedAlgo = 'SHA-1'; break; case 'SHA256': favoriteAlgo = 'SHA-256'; break; case 'SHA512': favoriteAlgo = 'SHA-512'; break; default: throw ('Bad hash algo choosen:' + algo); } return formattedAlgo; }
JavaScript XOR for STRING
function strXor(a, b) { let len = Math.min(a.length, b.length); let arr = new Array(len); for (var i = 0; i < len; ++i) arr[i] = a.charCodeAt(i) ^ b.charCodeAt(i); return String.fromCharCode.apply(null, arr); }
JavaScript XOR for HEX
function hexXor(a, b) { var res = "", l = Math.max(a.length, b.length); for (var i=0; i<l; i+=4) res = ("000"+(parseInt(a.slice(-i-4, -i||a.length), 16) ^ parseInt(b.slice(-i-4, -i||b.length), 16)).toString(16)).slice(-4) + res; return res; }
Аналог PBKDF2 на js:
function hi(algo, data, key, i) { let int1 = "\0\0\0\1"; let salt_int = key + bin2hex(int1); let ui = hash_hmac(algo, salt_int, data, 'HEX', 'TEXT', 'HEX'); // console.log('hi data: ' + data); // console.log('hi key: ' + key); // console.log('hi salt_int: ' + salt_int); //console.log('u1: ' + ui); let result = ui; for (let k = 1; k < i; k++) { ui = hash_hmac(algo, ui, data, 'HEX', 'TEXT', 'HEX'); result = hexXor(result , ui); // console.log('u'+k+': '+ui); // console.log('result'+k+': '+result); // if (k > 5) break; } return result; } /** * inputType - can be one of HEX, TEXT, B64, BYTES, or ARRAYBUFFER * outputType - B64, HEX, BYTES, or ARRAYBUFFER */ function hash_hmac(algo, data, key, inputDataType, inputKeyType, outputType) { // console.log('algo: '+algo); // console.log('inputType: '+inputType); let shaObj = new jsSHA(algo, inputDataType); shaObj.setHMACKey(key, inputKeyType); shaObj.update(data); return shaObj.getHMAC(outputType); } function hash(algo, data, inputType, outputType) { let shaObj = new jsSHA(algo, inputType); shaObj.update(data); return shaObj.getHash(outputType); }
Как отменить сортировку по умолчанию в DataTables
$(document).ready( $('#example').dataTable( { order: [] }); )
2018.09.21 Jquery live поиск
/** * JQ Live search for PP and PK lists * * https://codepen.io/html5andblog/pen/RPewBx */ $('.live-search-list li').each(function(){ $(this).attr('data-search-term', $(this).text().toLowerCase()); }); var searchTerm = '';//для сохранения текста поля искомого слова $('#searchinput').on('keyup', function(){ searchTerm = $(this).val().toLowerCase(); $('.live-search-list li').each(function(){ if ($(this).filter('[data-search-term *= ' + searchTerm + ']').length > 0 || searchTerm.length < 1) { $(this).show(); } else { $(this).hide(); } }); }); $('#searchclear').on('click', function(){//При нажатии кнопки "очистить поле ввода" searchTerm = $('#searchinput').val().toLowerCase(); $('.live-search-list li').each(function(){ if ($(this).filter('[data-search-term *= ' + searchTerm + ']').length > 0 || searchTerm.length < 1) { $(this).show(); } else { $(this).hide(); } }); });
2018.09.11 Jquery заполнить или очистить поле у всей колонки
$('.adm-list-table-cell-last').children("[type='text']").val(1);
Афоризм дня:
Лучшая школа дисциплины есть семья. (595)
Leave a reply