rsa.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { JSEncrypt } from 'jsencrypt'
  2. const publicKey = hexToDec();
  3. function hexToDec() {
  4. let str =
  5. 'LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FEWjFVUnZMODRUWG9LTUFXMng2UDZ4WHplZQpXaUxINVljSFJGZ3YwZzBmSVVtTG02UDZ1Z2s1WXpHSkhrSkxvWFlvYmt4SHJXV1FBRjhuZmRnTDVMYmYzMGJ3CjlITVJ1REJXV2w4S3NFYTdwTVllZ2NsY1dncVJwOXBMZVMzQzhXQlI1NmxsNTM4TDF0MkJWZEh5U1pvUnFGRE8KZmJqTitKN0xnWUl6S2NVZGJ3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo='
  6. str = atob(str);
  7. return str;
  8. }
  9. function atob(input) {
  10. const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  11. let str = input.replace(/=+$/, '');
  12. let output = '';
  13. if (str.length % 4 === 1) {
  14. throw new Error('InvalidLengthError');
  15. }
  16. for (let i = 0, len = str.length; i < len; i += 4) {
  17. const a = chars.indexOf(str.charAt(i));
  18. const b = chars.indexOf(str.charAt(i + 1));
  19. const c = chars.indexOf(str.charAt(i + 2));
  20. const d = chars.indexOf(str.charAt(i + 3));
  21. const sum = (a << 18) | (b << 12) | (c << 6) | d;
  22. output += String.fromCharCode((sum >> 16) & 0xFF, (sum >> 8) & 0xFF, sum & 0xFF);
  23. }
  24. return output;
  25. }
  26. export function returnJSEncrypt(data, is = true) {
  27. let jsencrypt = new JSEncrypt()
  28. jsencrypt.setPublicKey(publicKey)
  29. if (is) {
  30. data.st = Date.parse(new Date());
  31. }
  32. let s = JSON.stringify(data);
  33. let arr = [];
  34. if (s.length > 50) {
  35. let reg = /.{50}/g;
  36. let rs = s.match(reg);
  37. rs.push(s.substring(rs.join('').length));
  38. rs.forEach(item => {
  39. arr.push(jsencrypt.encrypt(item));
  40. })
  41. } else {
  42. arr[0] = jsencrypt.encrypt(s)
  43. }
  44. return arr
  45. }