webCrypto.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import JSEncrypt from '@/components/jsencrypt/jsencrypt.min.js';
  2. import cryptoJS from '@/crypto-js/index.js';
  3. function generateRSAKeyPair() {
  4. const keySize = parseInt(1024);
  5. const encryptor = new JSEncrypt({
  6. default_key_size: keySize
  7. });
  8. encryptor.getKey();
  9. const publicKey = encryptor.getPublicKey();
  10. const privateKey = encryptor.getPrivateKey();
  11. console.log(publicKey, privateKey)
  12. }
  13. // rsa加密
  14. export function rsaEncrypt(publicKey, data) {
  15. const encrypt = new JSEncrypt();
  16. encrypt.setPublicKey(publicKey);
  17. var time = +new Date();
  18. var str2 = data;
  19. return encrypt.encrypt(str2)
  20. }
  21. // ras解密
  22. export function rsaDecrypt(PrivateKey, data) {
  23. const encrypt = new JSEncrypt();
  24. encrypt.setPrivateKey(PrivateKey);
  25. return encrypt.decrypt(data);
  26. }
  27. // aes加密
  28. function aesEncrypt(data, key) {
  29. const iv = CryptoJS.lib.WordArray.random(16).toString() // 128位IV
  30. const encrypted = CryptoJS.AES.encrypt(
  31. JSON.stringify(data),
  32. CryptoJS.enc.Utf8.parse(key), {
  33. iv: CryptoJS.enc.Utf8.parse(iv),
  34. mode: CryptoJS.mode.CBC,
  35. padding: CryptoJS.pad.Pkcs7
  36. }
  37. )
  38. // console.log(encrypted)
  39. return {
  40. encryptedData: encrypted.toString(),
  41. iv
  42. }
  43. }
  44. // aes 解密函数
  45. export function aesDecrypt(encryptedData, key, iv) {
  46. console.log(encryptedData, key, iv, '解密需要的参数')
  47. const decrypted = CryptoJS.AES.decrypt(
  48. encryptedData,
  49. CryptoJS.enc.Utf8.parse(key), {
  50. iv: CryptoJS.enc.Utf8.parse(iv),
  51. mode: CryptoJS.mode.CBC,
  52. padding: CryptoJS.pad.Pkcs7
  53. })
  54. return decrypted.toString(CryptoJS.enc.Utf8)
  55. }
  56. export default {
  57. generateRSAKeyPair,
  58. rsaEncrypt,
  59. rsaDecrypt,
  60. aesEncrypt,
  61. aesDecrypt
  62. }