在Ubuntu环境下,你可以使用多种方法来加密JavaScript代码。以下是一些常见的方法:
安装UglifyJS:
sudo apt-get install uglify-js
使用UglifyJS压缩JavaScript文件:
uglifyjs input.js -o output.min.js -c -m
安装Terser:
sudo npm install terser -g
使用Terser压缩JavaScript文件:
terser input.js -o output.min.js --compress --mangle
安装crypto-js:
sudo npm install crypto-js
使用crypto-js加密和解密数据:
const CryptoJS = require("crypto-js");
// 加密
const encrypted = CryptoJS.AES.encrypt("Hello, World!", "secret-key").toString();
console.log(encrypted);
// 解密
const decrypted = CryptoJS.AES.decrypt(encrypted, "secret-key").toString(CryptoJS.enc.Utf8);
console.log(decrypted);
以下是一个使用Web Crypto API进行AES-GCM加密的示例:
async function encrypt(text, key) {
const encoder = new TextEncoder();
const data = encoder.encode(text);
const iv = crypto.getRandomValues(new Uint8Array(12));
const algorithm = { name: "AES-GCM", iv };
const encryptedData = await crypto.subtle.encrypt(algorithm, key, data);
return { encryptedData, iv };
}
async function decrypt(encryptedData, iv, key) {
const algorithm = { name: "AES-GCM", iv };
const decryptedData = await crypto.subtle.decrypt(algorithm, key, encryptedData);
const decoder = new TextDecoder();
return decoder.decode(decryptedData);
}
(async () => {
const key = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
const { encryptedData, iv } = await encrypt("Hello, World!", key);
const decryptedText = await decrypt(encryptedData, iv, key);
console.log("Original text:", "Hello, World!");
console.log("Encrypted data:", encryptedData);
console.log("Decrypted text:", decryptedText);
})();
请注意,这些方法只能提高代码的保护程度,但不能完全防止代码被反编译或破解。如果你需要更高级别的安全性,你可能需要考虑将敏感逻辑放在服务器端。