1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- const sm4 = require('sm-crypto');
- function SM4Encrypt_ECB(plainText, secretKey, hexString = false) {
- const sm4Context = {
- isPadding: true,
- mode: 'encrypt',
- };
- let key;
- if (!hexString) {
- key = wx.arrayBufferToBase64(new TextEncoder().encode(secretKey));
- } else {
- key = decodeHexString(secretKey);
- }
-
- sm4.setKey(sm4Context, key);
-
- const encryptedData = sm4.encryptECB(sm4Context, new TextEncoder().encode(plainText));
-
- return encodeBytesToHex(encryptedData);
- }
- function decodeHexString(hexString) {
-
- if (hexString.length % 2 !== 0) {
- throw new Error("Hexadecimal string must have an even length");
- }
- let bytes = [];
- for (let i = 0; i < hexString.length; i += 2) {
- bytes.push(parseInt(hexString.substr(i, 2), 16));
- }
- return bytes;
- }
- function encodeBytesToHex(bytes) {
-
- let hexString = '';
- for (let byte of bytes) {
- hexString += ('0' + byte.toString(16)).slice(-2);
- }
- return hexString;
- }
- module.exports = {
- SM4Encrypt_ECB,
- };
|