diff --git a/README.md b/README.md index 2f42b045879f0c129d8a1e3b11277bd1bbac7da4..055131c5af007e1a2228ad1b305546a29d637759 100644 --- a/README.md +++ b/README.md @@ -1,281 +1,130 @@ # crypto-js ## 简介 - -> crypto-js是一个加密算法类库,可以非常方便的进行加解密操作。目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、 -> PBKDF2、AES、RC4、DES等等。 +> 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) 。 ## 使用说明 - -### 引入依赖 - +1. 引入依赖 ``` import { CryptoJS } from '@ohos/crypto-js' ``` +2. md5算法使用 + + md5信息摘要算法(英语:md5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 + + md5特点: + 1. 不可逆性 --- 根据 MD5 值计算不出原始数据 + 2. 唯一性 --- 不同原始数据会有不同的 MD5 值 -### 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 - + md5算法在本库的使用: ``` - 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)) + //第一步在需要使用到的页面,导入CryptoJS + import { CryptoJS } from '@ohos/crypto-js' + //第二步在需要使用到md5的业务逻辑,调用md5算法 + var hash = CryptoJS.MD5("123456") //传参是需要加密的内容,返回值是加密后的数据 ``` +3. aes算法使用 + + AES算法全称Advanced Encryption Standard,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 + + AES是对称加密,所以加密解密都需要用到同一个秘钥。 -- sha256 - + AES算法在本库的使用: ``` - 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``` - + //第一步在需要使用到的页面,导入CryptoJS + import { CryptoJS } from '@ohos/crypto-js' + //第二步定义加密解密需要用到的key + var key = 'secret key 1234' + //第三步在需要使用AES加密的业务逻辑,调用AES加密 + var encrypted = CryptoJS.AES.encrypt('hello world', key).toString() //传参为加密内容及秘钥 + //第四步在需要把上面的加密块解密的业务逻辑,调用AES解密,注意key必须相同 + var decrypted = CryptoJS.AES.decrypt(encrypted, key) //传参为加密后的内容及秘钥 + ``` +其他加密算法使用方式,如sha1、sha256、sha224、sha512、sha384、sha3、ripemd160、hmac-md5、hmac-sha1、hmac-sha256、hmac-sha224、hmac-sha512、hmac-sha384、hmac-sha3、hmac-ripemd160 +、pbkdf2、aes、tripledes、rc4、rabbit、rabbit-legacy、evpkdf、des、triple-des、format-openssl、format-hex、enc-latin1、enc-utf8、enc-hex、enc-utf16、enc-base64、 +mode-cfb、mode-ctr、mode-ctr-gladman、mode-ofb、mode-ecb、pad-pkcs7、pad-ansix923、pad-iso10126、pad-iso97971、pad-zeropadding、pad-nopadding。 + +请参考如下样例:https://gitee.com/openharmony-sig/crypto-js/blob/master/entry/src/main/ets/pages/index.ets + + +## 接口列表 + +- `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 # 示例代码文件夹 @@ -289,10 +138,7 @@ CryptoJS.DES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), { ```` ## 贡献代码 - -使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/crypto-js/issues) -给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/crypto-js/pulls) 。 +使用过程中发现任何问题都可以提 [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) ,请自由地享受和参与开源。 +本项目基于 [MIT License](https://gitee.com/openharmony-sig/crypto-js/blob/master/LICENSE) ,请自由地享受和参与开源。 \ No newline at end of file