ts-sdk

utils.js 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. "use strict";
  2. exports.__esModule = true;
  3. var crypto_js_1 = require("crypto-js");
  4. var Utils = /** @class */ (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. // ArrayBuffer 转为字符串,参数为 ArrayBuffer 对象
  16. Utils.ab2str = function (buf) {
  17. // 注意,如果是大型二进制数组,为了避免溢出,必须一个一个字符地转
  18. if (buf && buf.byteLength < 1024) {
  19. return String.fromCharCode.apply(null, new Uint8Array(buf));
  20. }
  21. var bufView = new Uint8Array(buf);
  22. var len = bufView.length;
  23. var byteStr = new Array(len);
  24. for (var i = 0; i < len; i++) {
  25. byteStr[i] = String.fromCharCode.call(null, bufView[i]);
  26. }
  27. return byteStr.join('');
  28. };
  29. // 字符串转为 ArrayBuffer 对象,参数为字符串
  30. Utils.str2ab = function (str) {
  31. var buf = new ArrayBuffer(str.length); // 每个字符占用2个字节
  32. var bufView = new Uint8Array(buf);
  33. for (var i = 0, strLen = str.length; i < strLen; i++) {
  34. bufView[i] = str.charCodeAt(i);
  35. }
  36. return buf;
  37. };
  38. // 解密服务端传递过来的字符串
  39. Utils.decrypt = function (data, key, iv) {
  40. var binData = Utils.stringToBin(data);
  41. var base64Data = Utils.binToBase64(binData);
  42. var bytes = crypto_js_1.AES.decrypt(base64Data, crypto_js_1.enc.Latin1.parse(key), {
  43. iv: crypto_js_1.enc.Latin1.parse(iv),
  44. mode: crypto_js_1.mode.CBC,
  45. padding: crypto_js_1.pad.Pkcs7
  46. });
  47. return bytes.toString(crypto_js_1.enc.Utf8);
  48. };
  49. // 加密字符串以后传递到服务端
  50. Utils.encrypt = function (data, key, iv) {
  51. var result = crypto_js_1.AES.encrypt(data, crypto_js_1.enc.Latin1.parse(key), {
  52. iv: crypto_js_1.enc.Latin1.parse(iv),
  53. mode: crypto_js_1.mode.CBC,
  54. padding: crypto_js_1.pad.Pkcs7
  55. });
  56. return Utils.binToString(Utils.base64ToBin(result.toString()));
  57. };
  58. // 字节数组转换为base64编码
  59. Utils.binToBase64 = function (bitString) {
  60. var result = '';
  61. var tail = bitString.length % 6;
  62. var bitStringTemp1 = bitString.substr(0, bitString.length - tail);
  63. var bitStringTemp2 = bitString.substr(bitString.length - tail, tail);
  64. for (var i = 0; i < bitStringTemp1.length; i += 6) {
  65. var index = parseInt(bitStringTemp1.substr(i, 6), 2);
  66. result += Utils.code[index];
  67. }
  68. bitStringTemp2 += new Array(7 - tail).join('0');
  69. if (tail) {
  70. result += Utils.code[parseInt(bitStringTemp2, 2)];
  71. result += new Array((6 - tail) / 2 + 1).join('=');
  72. }
  73. return result;
  74. };
  75. // base64编码转换为字节数组
  76. Utils.base64ToBin = function (str) {
  77. var bitString = '';
  78. var tail = 0;
  79. for (var i = 0; i < str.length; i++) {
  80. if (str[i] !== '=') {
  81. var decode = this.code.indexOf(str[i]).toString(2);
  82. bitString += new Array(7 - decode.length).join('0') + decode;
  83. }
  84. else {
  85. tail++;
  86. }
  87. }
  88. return bitString.substr(0, bitString.length - tail * 2);
  89. };
  90. // 字符串转换为字节数组
  91. Utils.stringToBin = function (str) {
  92. var result = '';
  93. for (var i = 0; i < str.length; i++) {
  94. var charCode = str.charCodeAt(i).toString(2);
  95. result += new Array(9 - charCode.length).join('0') + charCode;
  96. }
  97. return result;
  98. };
  99. // 字节数组转化为字符串
  100. Utils.binToString = function (bin) {
  101. var result = '';
  102. for (var i = 0; i < bin.length; i += 8) {
  103. result += String.fromCharCode(parseInt(bin.substr(i, 8), 2));
  104. }
  105. return result;
  106. };
  107. Utils.makeCRCTable = function () {
  108. var c;
  109. var crcTable = [];
  110. for (var n = 0; n < 256; n++) {
  111. c = n;
  112. for (var k = 0; k < 8; k++) {
  113. c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
  114. }
  115. crcTable[n] = c;
  116. }
  117. return crcTable;
  118. };
  119. Utils.code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
  120. return Utils;
  121. }());
  122. exports.Utils = Utils;
  123. //# sourceMappingURL=utils.js.map