1234567891011121314151617181920212223242526272829303132 |
- const sm4 = require('sm-crypto');
- //const sm4 = require('miniprogram-sm-crypto').sm4;
- function stringToHex(str) {
- console.log('stringToHex');
- const buffer = new ArrayBuffer(str.length);
- const view = new Uint8Array(buffer);
- for (let i = 0; i < str.length; i++) {
- view[i] = str.charCodeAt(i);
- }
- return Array.from(view, byte => byte.toString(16).padStart(2, '0')).join('');
- }
- function sm4EcbEncrypt(plaintext, key) {
- // 确保密钥是32字符的十六进制字符串
- if (key.length !== 32 || !/^[0-9a-fA-F]+$/.test(key)) {
- throw new Error('密钥必须是32字符的十六进制字符串');
- }
- console.log('plaintext :' + plaintext);
- // 使用 sm-crypto 进行 SM4 ECB 加密
- const ciphertextHex = sm4.sm4.encrypt(plaintext,key);
- console.log('ciphertextHex :' + ciphertextHex);
- // 将明文转换为十六进制字符串
- const plaintextHex = stringToHex(ciphertextHex);
- console.log('plaintextHex :' + plaintextHex);
- return plaintextHex;
- }
- module.exports = {
- sm4EcbEncrypt,
- };
|