大数据最全cocosCreator 之 crypto-es数据加密_cocos使用node-rsa,零基础入门大数据开发

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 非对称加密 使用公钥加密,私钥解密,常用的有RSA、DSA
  • 哈希函数 将任意长度的数据映射为固定长度的哈希值,特点是不可逆,常用的有MD5、SHA-1、SHA-256
  • 消息认证码(MAC) 使用密钥对消息进行加密,并附加在消息中,以确保消息的完整性和真实性 常用的有HMAC
  • 数字签名 用于对数据进行签名,以验证数据的来源和完整性,常用的有 RSA、DSA

有些时候为了数据的安全,也会使用base64的策略。

它只是一种将二进制数据转换为可打印字符的编码方式,属于编码算法而非加密算法

该篇文章并非讲述加密算法的各种使用,主要说明内容: 在cocosCreator 3.x中对于明文数据的保护。

crypto-es


crypto-esnpm提供的用于加密和解密的包。

它提供了各种加密算法和工具,包括对称加密、哈希函数、数字签名和公钥加密等。此外,它还支持生成随机数、密码学密钥管理等。

在cocosCreator中使用crypto-es,需要npm进行下载。打开终端,进入项目目录,然后运行命令:

npm install crypto-es

需要了解更多NPM,可参考文档:NPM的使用介绍

下载成功后,crypto-es 会放到项目目录 ./node_modules中。

然后在脚本中直接引用即可。

import CryptoES from "crypto-es";

简单的示例:

const key = "encrypt";
const value = "Hello Encrypt";
console.log("加密前的数据:", value);
let value_1 = CryptoES.AES.encrypt(value, key).toString();
console.log("加密后的数据:", value_1);
let value_2 = CryptoES.AES.decrypt(value_1, key).toString(CryptoES.enc.Utf8);
console.log("解密后的数据:", value_2);

/\*
加密前的数据: Hello Encrypt
加密后的数据: U2FsdGVkX1/cqGU/G7xGVONeYS4R6sRjZYkMeAmUcdQ=
解密后的数据: Hello Encrypt
\*/

更多内容可参考: npm crypto-es

封装


在此感谢oops-framework开源框架的作者,对加密相关进行了封装。

主要文件实现在:EncryptUtil.ts

import CryptoES from "crypto-es";

export class EncryptUtil {
    private static _key: string = "";
    private static _iv: CryptoES.lib.WordArray = null;

    // 初始化加密库
    static initCrypto(key: string, iv: string) {
        this._key = key;
        this._iv = CryptoES.enc.Hex.parse(iv);
    }
    
    // MD5加密
    static md5(msg: string) {
        return CryptoES.MD5(msg).toString();
    }

    // AES加密
    static aesEncrypt(msg: string, key?: string, iv?: string): string {
        return CryptoES.AES.encrypt(
            msg,
            this._key,
            {
                iv: this._iv,
                format: this.JsonFormatter
            },
        ).toString();
    }

    // AES解密
    static aesDecrypt(str: string, key?: string, iv?: string): string {
        const decrypted = CryptoES.AES.decrypt(
            str,
            this._key,
            {
                iv: this._iv,
                format: this.JsonFormatter
            },
        );
        return decrypted.toString(CryptoES.enc.Utf8);
    }

    private static JsonFormatter = {
        stringify: function (cipherParams: any) {
            const jsonObj: any = { ct: cipherParams.ciphertext.toString(CryptoES.enc.Base64) };
            if (cipherParams.iv) {
                jsonObj.iv = cipherParams.iv.toString();
            }
            if (cipherParams.salt) {
                jsonObj.s = cipherParams.salt.toString();
            }
            return JSON.stringify(jsonObj);
        },
        parse: function (jsonStr: any) {
            const jsonObj = JSON.parse(jsonStr);
            const cipherParams = CryptoES.lib.CipherParams.create(
                { ciphertext: CryptoES.enc.Base64.parse(jsonObj.ct) },
            );
            if (jsonObj.iv) {
                cipherParams.iv = CryptoES.enc.Hex.parse(jsonObj.iv)


![img](https://img-blog.csdnimg.cn/img_convert/ea003f37c492f0280aa428a6307aeda0.png)
![img](https://img-blog.csdnimg.cn/img_convert/1b01c26a315cce0798c7061edc2cb1c1.png)
![img](https://img-blog.csdnimg.cn/img_convert/c70428dffd7f94a5bb2e29162dbecde4.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值