No Description

utils.js 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var crypto_js_1 = require("crypto-js");
  4. var Utils = (function () {
  5. function Utils() {
  6. }
  7. Utils.crc32 = function (str) {
  8. var crcTable = window.crcTable || (window.crcTable = Utils.makeCRCTable());
  9. var crc = 0 ^ -1;
  10. for (var i = 0; i < str.length; i++) {
  11. crc = (crc >>> 8) ^ crcTable[(crc ^ str.charCodeAt(i)) & 0xff];
  12. }
  13. return (crc ^ -1) >>> 0;
  14. };
  15. Utils.ab2str = function (buf) {
  16. if (buf && buf.byteLength < 1024) {
  17. return String.fromCharCode.apply(null, new Uint8Array(buf));
  18. }
  19. var bufView = new Uint8Array(buf);
  20. var len = bufView.length;
  21. var byteStr = new Array(len);
  22. for (var i = 0; i < len; i++) {
  23. byteStr[i] = String.fromCharCode.call(null, bufView[i]);
  24. }
  25. return byteStr.join('');
  26. };
  27. Utils.str2ab = function (str) {
  28. var buf = new ArrayBuffer(str.length);
  29. var bufView = new Uint8Array(buf);
  30. for (var i = 0, strLen = str.length; i < strLen; i++) {
  31. bufView[i] = str.charCodeAt(i);
  32. }
  33. return buf;
  34. };
  35. Utils.decrypt = function (data, key, iv) {
  36. var binData = Utils.stringToBin(data);
  37. var base64Data = Utils.binToBase64(binData);
  38. var bytes = crypto_js_1.AES.decrypt(base64Data, crypto_js_1.enc.Latin1.parse(key), {
  39. iv: crypto_js_1.enc.Latin1.parse(iv),
  40. mode: crypto_js_1.mode.CBC,
  41. padding: crypto_js_1.pad.Pkcs7,
  42. });
  43. return bytes.toString(crypto_js_1.enc.Utf8);
  44. };
  45. Utils.encrypt = function (data, key, iv) {
  46. var result = crypto_js_1.AES.encrypt(data, crypto_js_1.enc.Latin1.parse(key), {
  47. iv: crypto_js_1.enc.Latin1.parse(iv),
  48. mode: crypto_js_1.mode.CBC,
  49. padding: crypto_js_1.pad.Pkcs7,
  50. });
  51. return Utils.binToString(Utils.base64ToBin(result.toString()));
  52. };
  53. Utils.binToBase64 = function (bitString) {
  54. var tail = bitString.length % 6;
  55. var bitStringTemp1 = bitString.substr(0, bitString.length - tail);
  56. var result = '';
  57. var bitStringTemp2 = bitString.substr(bitString.length - tail, tail);
  58. for (var i = 0; i < bitStringTemp1.length; i += 6) {
  59. var index = parseInt(bitStringTemp1.substr(i, 6), 2);
  60. result += Utils.code[index];
  61. }
  62. bitStringTemp2 += new Array(7 - tail).join('0');
  63. if (tail) {
  64. result += Utils.code[parseInt(bitStringTemp2, 2)];
  65. result += new Array((6 - tail) / 2 + 1).join('=');
  66. }
  67. return result;
  68. };
  69. Utils.base64ToBin = function (str) {
  70. var bitString = '';
  71. var tail = 0;
  72. for (var i = 0; i < str.length; i++) {
  73. if (str[i] !== '=') {
  74. var decode = this.code.indexOf(str[i]).toString(2);
  75. bitString += new Array(7 - decode.length).join('0') + decode;
  76. }
  77. else {
  78. tail++;
  79. }
  80. }
  81. return bitString.substr(0, bitString.length - tail * 2);
  82. };
  83. Utils.stringToBin = function (str) {
  84. var result = '';
  85. for (var i = 0; i < str.length; i++) {
  86. var charCode = str.charCodeAt(i).toString(2);
  87. result += new Array(9 - charCode.length).join('0') + charCode;
  88. }
  89. return result;
  90. };
  91. Utils.binToString = function (bin) {
  92. var result = '';
  93. for (var i = 0; i < bin.length; i += 8) {
  94. result += String.fromCharCode(parseInt(bin.substr(i, 8), 2));
  95. }
  96. return result;
  97. };
  98. Utils.makeCRCTable = function () {
  99. var c;
  100. var crcTable = [];
  101. for (var n = 0; n < 256; n++) {
  102. c = n;
  103. for (var k = 0; k < 8; k++) {
  104. c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
  105. }
  106. crcTable[n] = c;
  107. }
  108. return crcTable;
  109. };
  110. Utils.code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
  111. return Utils;
  112. }());
  113. exports.Utils = Utils;