sm2util.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import {sm2} from 'sm-crypto'
  2. const PUBLICKEY='04404c634de4deda80486b4a331adf03448a449d980fe040540abe242ba275cc815aada6a63c63e24d4672e14360c72b1819914f49708f25498ededc2217384960'
  3. const PRIVATEKEY='ebaedbccd3f730ec1985b945f10429b468c7f3f70e66da19b8657f023e6cded4'
  4. /**
  5. * 加密
  6. */
  7. export function encode(msgString) {
  8. const msg = msgString
  9. if (typeof msgString !== 'string') {
  10. msg = JSON.stringify(msgString)
  11. }
  12. // 1 - C1C3C2; 0 - C1C2C3; 默认为1
  13. const cipherMode = 1
  14. const publicKey = PUBLICKEY
  15. // 加密结果
  16. const encryptData = sm2.doEncrypt(msg, publicKey, cipherMode)
  17. //Base64编码 自行选择是否使用
  18. //const baseEncode = Base64.encode(encryptData)
  19. // 加密后的密文前需要添加04,后端才能正常解密 (不添加04,后端处理也可以)
  20. const encrypt = '04' + encryptData
  21. return encrypt
  22. }
  23. /**
  24. * 解密
  25. */
  26. export function decode(enStr) {
  27. const msg = enStr
  28. if (typeof enStr !== 'string') {
  29. msg = JSON.stringify(enStr)
  30. }
  31. // 1 - C1C3C2; 0 - C1C2C3; 默认为1
  32. const cipherMode = 1
  33. const privateKey = PRIVATEKEY
  34. const enval = enStr.substring(2)
  35. // 解密结果
  36. const doDecrypt = sm2.doDecrypt(enval, privateKey, cipherMode)
  37. // 解密后类型转换
  38. if(doDecrypt){
  39. return JSON.parse(doDecrypt)
  40. }else{
  41. return "";
  42. }
  43. }