# crypto-js **Repository Path**: xusaisai2/crypto-js ## Basic Information - **Project Name**: crypto-js - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 40 - **Created**: 2022-09-29 - **Last Updated**: 2024-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # crypto-js ## 简介 > crypto-js是一个加密算法类库,可以非常方便的进行加解密操作。目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、 > PBKDF2、AES、RC4、DES等等。 ![preview.gif](preview/preview.gif) ## 下载安装 ```shell npm install @ohos/crypto-js --save ``` OpenHarmony npm环境配置等更多内容,请参考 [如何安装OpenHarmony npm包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md) 。 ## 使用说明 ### 引入依赖 ``` import { CryptoJS } from '@ohos/crypto-js' ``` ### Message Digests - md5 ``` CryptoJS.MD5('message') ``` - sha1 ``` CryptoJS.SHA1('message'); ``` - sha256 ``` CryptoJS.SHA256('message') ``` - sha512 ``` CryptoJS.SHA512('message') ``` - ripemd160 ``` CryptoJS.RIPEMD160('message') ``` - hmac-md5 ``` CryptoJS.HmacMD5('message', 'pwd') ``` - hmac-sha1 ``` CryptoJS.HmacSHA1('message', 'pwd') ``` - hmac-sha256 ``` CryptoJS.HmacSHA256('message', 'pwd') ``` - hmac-sha512 ``` CryptoJS.HmacSHA512('message', 'pwd') ``` - hmac-ripemd160 ``` CryptoJS.HmacRIPEMD160('message', 'pwd') ``` ### Ciphers 支持AES、DES、RC4、RABBIT的加密和解密功能,以及操作模式:CBC、CFB、CTR、CTRGladman、OFB和ECB。 - AES 加密 ``` CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(); ``` 输出的密文默认是base64编码的,如果需要输出的是hex,可做如下设置: ``` CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, format: CryptoJS.format.Hex }).toString(); ``` 解密 默认对base64编码的密文进行解密,如果你的密文是hex的,需要如上一样的设置。 ``` CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); ``` - DES 支持在ECB和CBC模式下提供Triple DES(3DES)和DES加密和解密。 加密 ``` CryptoJS.DES.encrypt(message, CryptoJS.enc.Utf8.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(); ``` 解密 ``` CryptoJS.DES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); ``` - 其他加解密算法的使用方式与上面方式相同。 ### Utilities - base64 编码 ``` let wordArray=CryptoJS.enc.Utf8.parse(message); let result=CryptoJS.enc.Base64.stringify(wordArray); ``` 解码 ``` CryptoJS.enc.Base64.parse(result).toString(CryptoJS.enc.Utf8); ``` - hex 编码 ``` let wordArray =CryptoJS.enc.Utf8.parse(message); let result = CryptoJS.enc.Hex.stringify(wordArray) ``` 解码 ``` CryptoJS.enc.Hex.parse(result).toString(CryptoJS.enc.Utf8); ``` - 随机数 ``` CryptoJS.lib.WordArray.random(nBytes) ``` ### 针对文件使用说明 将文件数据TypedArray(支持Uint8Array、Uint16Array、Uint32Array三种)转化为WordArray再进行加密处理。 - md5 ``` Crypto.MD5(CryptoJs.lib.WordArray.create(array)) ``` - sha1 ``` Crypto.SHA1(CryptoJs.lib.WordArray.create(array)) ``` - sha256 ``` Crypto.SHA256(CryptoJs.lib.WordArray.create(array)) ``` ## 接口说明 接口列表: - ```crypto-js/md5``` - ```crypto-js/sha1``` - ```crypto-js/sha256``` - ```crypto-js/sha224``` - ```crypto-js/sha512``` - ```crypto-js/sha384``` - ```crypto-js/sha3``` - ```crypto-js/ripemd160``` --- - ```crypto-js/hmac-md5``` - ```crypto-js/hmac-sha1``` - ```crypto-js/hmac-sha256``` - ```crypto-js/hmac-sha224``` - ```crypto-js/hmac-sha512``` - ```crypto-js/hmac-sha384``` - ```crypto-js/hmac-sha3``` - ```crypto-js/hmac-ripemd160``` --- - ```crypto-js/pbkdf2``` --- - ```crypto-js/aes``` - ```crypto-js/tripledes``` - ```crypto-js/rc4``` - ```crypto-js/rabbit``` - ```crypto-js/rabbit-legacy``` - ```crypto-js/evpkdf``` - ```crypto-js/des``` - ```crypto-js/triple-des``` --- - ```crypto-js/format-openssl``` - ```crypto-js/format-hex``` --- - ```crypto-js/enc-latin1``` - ```crypto-js/enc-utf8``` - ```crypto-js/enc-hex``` - ```crypto-js/enc-utf16``` - ```crypto-js/enc-base64``` --- - ```crypto-js/mode-cfb``` - ```crypto-js/mode-ctr``` - ```crypto-js/mode-ctr-gladman``` - ```crypto-js/mode-ofb``` - ```crypto-js/mode-ecb``` --- - ```crypto-js/pad-pkcs7``` - ```crypto-js/pad-ansix923``` - ```crypto-js/pad-iso10126``` - ```crypto-js/pad-iso97971``` - ```crypto-js/pad-zeropadding``` - ```crypto-js/pad-nopadding``` ## 兼容性 支持 OpenHarmony API version 9 版本。 ## 目录结构 ```` |---- crypto-js | |---- entry # 示例代码文件夹 | |---- crypto # crypto-js库文件夹 | |---- index.ts # 对外接口 | |---- src | |---- main | |---- ets | |---- crypto.ts # 加密封装类 | |---- README.md # 安装使用方法 ```` ## 贡献代码 使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/crypto-js/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/crypto-js/pulls) 。 ## 开源协议 本项目基于 [MIT License](https://gitee.com/openharmony-sig/crypto-js/blob/master/LICENSE) ,请自由地享受和参与开源。