crypto.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // src/utils/crypto.ts
  2. var sha256 = async (data) => {
  3. const algorithm = { name: "SHA-256", alias: "sha256" };
  4. const hash = await createHash(data, algorithm);
  5. return hash;
  6. };
  7. var sha1 = async (data) => {
  8. const algorithm = { name: "SHA-1", alias: "sha1" };
  9. const hash = await createHash(data, algorithm);
  10. return hash;
  11. };
  12. var md5 = async (data) => {
  13. const algorithm = { name: "MD5", alias: "md5" };
  14. const hash = await createHash(data, algorithm);
  15. return hash;
  16. };
  17. var createHash = async (data, algorithm) => {
  18. let sourceBuffer;
  19. if (ArrayBuffer.isView(data) || data instanceof ArrayBuffer) {
  20. sourceBuffer = data;
  21. } else {
  22. if (typeof data === "object") {
  23. data = JSON.stringify(data);
  24. }
  25. sourceBuffer = new TextEncoder().encode(String(data));
  26. }
  27. if (crypto && crypto.subtle) {
  28. const buffer = await crypto.subtle.digest(
  29. {
  30. name: algorithm.name
  31. },
  32. sourceBuffer
  33. );
  34. const hash = Array.prototype.map.call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)).join("");
  35. return hash;
  36. }
  37. return null;
  38. };
  39. export {
  40. createHash,
  41. md5,
  42. sha1,
  43. sha256
  44. };