cryptoAES.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
  2. // 密钥对生成 http://web.chacuo.net/netrsakeypair
  3. const publicKey1 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsiWEvEwTJxDsLqfHJaxeXvLL200H7NiMdQ1GK+OGst3NZHX4fjYnyDkc6QCK0CgTJeNO1/UZ26Pv55C98gXH0uzitoT2XGfJY5WDISvpv9vdOBCd60urdsaW9mrst4YxUjZO5nljlWnImnpa+vmS5NHWGNZdsUvMWGEWLM/kijwIDAQAB";
  4. const privateKey1 = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAKyJYS8TBMnEOwup8clrF5e8svbTQfs2Ix1DUYr44ay3c1kdfh+NifIORzpAIrQKBMl407X9Rnbo+/nkL3yBcfS7OK2hPZcZ8ljlYMhK+m/2904EJ3rS6t2xpb2auy3hjFSNk7meWOVaciaelr6+ZLk0dYY1l2xS8xYYRYsz+SKPAgMBAAECgYEAgvrn5Cyz/dgSWxBwlU/PYUnHMsm91U+L6LMqPC4kZFIAJy7UiG+SwUdFm1sE/Vh9udUYI5ha3fqRD2vDAOnj737csBTUgpQOfp//tsyg/jX5ghAAeO8eeAs3ENwHpGVPYHnTu1kvlrW/Npn6BQ7IgbSRylTaIbOAXH7WBtI4UoECQQDXzCDaDx2iUohtmYcAzHwDU4CLmyeRCLIufD5xfjp0Oztd3mQcDJs5GYcyWJ/aDGIrs67rqwQP3ad6tq1+1WzpAkEAzK4MLGFwU295SjfYYY/TpKWyK9ijh5PWvySTxLZslr/sedLH64oo7KquhiG47JcnbBwJjqUJOeS8IbknWVkItwJBAKl88NxzfNHtwqtaJtdww4IVRmPfs37M9q1d9elLu/toPiNmtPf2yr9ZFn9rbfljOoOad6svQVx4ub6+1ZtFY2kCQBa25gDy201XHKXA5tGE7Z7jCI/XHebI4FccDw4QlKJyMCMg4jDgh0QkePPHwEb5S1WzEthytkBngv1XF+fReqcCQQCKmbA/ny8jdiraEhNYZDJXI3AOCDnUmBsGTqoxg7tk6ghqyjOeeJBIO1YTPDD2+OaCTEpZPbhK8Khyq417z7bV";
  5. const publicKey2 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDR8l+B4jG6mEyMW8LYoNwMAUGnbZzDoKBSB1N4o19NscpyOA5m5Yyy2PDeja+iRNOwC7KTmKynd0Qzt8kwVnZHxA+oeKpNpepMS/+felan/QDgUD3u0Tix/sxuZ7GVB2h4X39wJTfgItNC7IK1qNQSZMkBfPhSQKQktkIlPU78BwIDAQAB";
  6. const privateKey2 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANHyX4HiMbqYTIxbwtig3AwBQadtnMOgoFIHU3ijX02xynI4DmbljLLY8N6Nr6JE07ALspOYrKd3RDO3yTBWdkfED6h4qk2l6kxL/596Vqf9AOBQPe7ROLH+zG5nsZUHaHhff3AlN+Ai00LsgrWo1BJkyQF8+FJApCS2QiU9TvwHAgMBAAECgYBhUmWLo/tBcFAr0G2mVgsrVXnFzz4YQWGQJO1AwxruvTgHcozajhaG4aHmyO9d3WHz/bguS1vd1Z+8CbotuibhjoiA464AL2sM9S490oYwLm39EFhSgG8JxovxrfpZ+fEpVjUjna40OSBvvtKtfhoBEjIRArd2Okkcx1f8f+MrgQJBAPL+5Rmtc9sLHDzhaqgP1Z0ntESLRN+JhqspFOaEibMdeBdlBbBfQ1HFdV8CsWLjzn/IM3JQnK4LnZ8hXwbWM/ECQQDdLrMFm5NESeYjlaLvBzHtQxTv6YOLz4I9++2YITa0+FvvRBhkLgrOYrO0yALIlrbdhxBnJDZzfYlpiJ/9pUd3AkEA4h4xoLBYpBd1om1864E4nXJJ/JLAd2cpavLioRPqc0PT8akvHw22vkwJyWzfFo+4JA5vWUwMUKU8esz5+YmwcQJADKftana6eH/aAVNAnXjF7JOYERpFgqx/AVj3AWt1G+nSKOC2nJTd3W1cZw3CywOEtyxRTfWOgBFA2Z8NuI/KhQJAIHAiOZH5P4s6WdNu3Gsg8HLcCtc+2Z8aeaBIDi+/L5pMHjiBVTtSEuPTvuhhan4ifGTV3uoJRRPO6re4F7mgZA==";
  7. // 加密
  8. function encrypt(txt) {
  9. // console.log(txt.length)
  10. const encryptor = new JSEncrypt()
  11. encryptor.setPublicKey(publicKey2) // 设置公钥
  12. const res=encryptor.encrypt(txt)
  13. // var buf = hexToBytes(res);
  14. // console.log(buf.length,res.length);
  15. return res // 对数据进行加密
  16. }
  17. // 解密
  18. function decrypt(txt) {
  19. const encryptor = new JSEncrypt()
  20. encryptor.setPrivateKey(privateKey2) // 设置私钥
  21. return encryptor.decrypt(txt) // 对数据进行解密
  22. }
  23. //分段加解密---------------------------------
  24. function hexToBytes(hex) {//字符转字节
  25. for (var bytes = [], c = 0; c < hex.length; c += 2)
  26. bytes.push(parseInt(hex.substr(c, 2), 16));
  27. return bytes;
  28. }
  29. function bytesToHex(bytes) {//字节转字符
  30. for (var hex = [], i = 0; i < bytes.length; i++) {
  31. hex.push((bytes[i] >>> 4).toString(16));
  32. hex.push((bytes[i] & 0xF).toString(16));
  33. }
  34. return hex.join("");
  35. }
  36. //方法2
  37. export function encryptLong2(string){
  38. // console.log(string)
  39. // var lt = "";
  40. var ct = "";
  41. //RSA每次加密117bytes,需要辅助方法判断字符串截取位置
  42. //1.获取字符串截取点
  43. var bytes = new Array();
  44. bytes.push(0);
  45. var byteNo = 0;
  46. var len, c;
  47. len = string.length;
  48. var temp = 0;
  49. for (var i = 0; i < len; i++) {
  50. c = string.charCodeAt(i);
  51. if (c >= 0x010000 && c <= 0x10FFFF) {
  52. byteNo += 4;
  53. } else if (c >= 0x000800 && c <= 0x00FFFF) {
  54. byteNo += 3;
  55. } else if (c >= 0x000080 && c <= 0x0007FF) {
  56. byteNo += 2;
  57. } else {
  58. byteNo += 1;
  59. }
  60. if ((byteNo % 117) >= 114 || (byteNo % 117) == 0) {
  61. if (byteNo - temp >= 114) {
  62. bytes.push(i);
  63. temp = byteNo;
  64. }
  65. }
  66. }
  67. //console.log(bytes);
  68. //2.截取字符串并分段加密
  69. if (bytes.length > 1) {
  70. for (var i = 0; i < bytes.length - 1; i++) {
  71. var str;
  72. if (i == 0) {
  73. str = string.substring(0, bytes[i + 1] + 1);
  74. } else {
  75. str = string.substring(bytes[i] + 1, bytes[i + 1] + 1);
  76. }
  77. // console.log(str)
  78. var t1 = encrypt(str);
  79. ct += t1;
  80. //console.log(ct)
  81. }
  82. ;
  83. if (bytes[bytes.length - 1] != string.length - 1) {
  84. var lastStr = string.substring(bytes[bytes.length - 1] + 1);
  85. // console.log(lastStr)
  86. var t1 = encrypt(lastStr);
  87. ct += t1;
  88. //console.log(ct)
  89. }
  90. // console.log(ct)
  91. return ct;
  92. }
  93. var t = encrypt(string);
  94. return t;
  95. };
  96. export function decryptLong2(string) {
  97. if(!string){
  98. return '';
  99. }
  100. // console.log(string);
  101. //return decrypt(string);
  102. // var maxLength = ((k.n.bitLength()+7)>>3);
  103. var MAX_DECRYPT_BLOCK = 172;
  104. var ct = "";
  105. var t1;
  106. var bufTmp;
  107. var hexTmp;
  108. var buf = string;//hexToBytes(string);
  109. // console.log(buf.length);
  110. // console.log(buf);
  111. var inputLen = buf.length;
  112. //开始长度
  113. var offSet = 0;
  114. //结束长度
  115. var endOffSet = MAX_DECRYPT_BLOCK;
  116. //分段解密
  117. while (inputLen - offSet > 0) {
  118. if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
  119. bufTmp = buf.substr(offSet, MAX_DECRYPT_BLOCK);
  120. //hexTmp = bytesToHex(bufTmp);
  121. t1 = decrypt(bufTmp);
  122. if(t1){
  123. ct += t1;
  124. }
  125. else{
  126. return null;
  127. }
  128. } else {
  129. bufTmp = buf.slice(offSet, inputLen);
  130. //hexTmp = bytesToHex(bufTmp);
  131. //console.log(hexTmp);
  132. t1 = decrypt(bufTmp);
  133. if(t1){
  134. ct += t1;
  135. }
  136. else{
  137. return null;
  138. }
  139. }
  140. offSet += MAX_DECRYPT_BLOCK;
  141. endOffSet += MAX_DECRYPT_BLOCK;
  142. }
  143. //console.log(ct);
  144. return ct;
  145. };