token加密的算法
1.哈希算法(Hash Algorithm)
- 原理:哈希算法是一种单向加密算法,它将任意长度的数据转换为固定长度的哈希值。常见的哈希算法有 MD5、SHA - 1、SHA - 256 等。以 SHA - 256 为例,它会对输入的数据进行复杂的数学运算,生成一个 256 位(32 字节)的哈希值。这个过程是不可逆的,也就是说,几乎不可能从哈希值反推出原始数据。
2.对称加密算法(Symmetric - key Encryption)
- 原理:对称加密算法使用相同的密钥进行加密和解密。在加密时,将明文数据和密钥通过特定的加密算法(如 AES - Advanced Encryption Standard)生成密文;在解密时,使用相同的密钥将密文还原为明文。例如,AES 算法支持 128 位、192 位和 256 位的密钥长度,加密过程中,会对数据进行多轮的置换和替换操作,保证数据的安全性。
3.非对称加密算法(Asymmetric - key Encryption)
- 原理:非对称加密算法使用一对密钥,即公钥和私钥。公钥可以公开,任何人都可以使用公钥对数据进行加密;私钥则由特定的用户或系统保管,只有拥有私钥的一方才能对加密的数据进行解密。典型的非对称加密算法是 RSA(Rivest - Shamir - Adleman)。例如,在生成 RSA 密钥对时,会产生两个密钥,一个是公钥(可以公开给客户端),一个是私钥(保存在服务器端)。客户端使用公钥对 Token 进行加密后发送给服务器,服务器使用私钥进行解密。
MD5加密方法的封装
1.定义与原理
-
MD5(Message - Digest Algorithm 5)是一种广泛使用的哈希函数,用于将任意长度的数据转换为 128 位(16 字节)的哈希值(也称为消息摘要)。它通过对输入数据进行一系列复杂的数学运算来生成这个唯一的哈希值。
-
具体来说,MD5 算法将输入的数据划分为 512 位(64 字节)的块,对于不足 512 位的数据会进行填充使其满足要求。然后,它会对这些数据块进行四轮循环运算,每一轮包含 16 个操作步骤。这些操作涉及到布尔函数、位运算(如与、或、非、异或)和加法运算等,通过这些操作不断地变换和压缩数据,最终得到一个 128 位的哈希值。
2.下载安装加密库
-
crypto-js 仓库链接
温馨提示:@2.0.4-rc.1 为版本号
ohpm install @ohos/crypto-js@2.0.4-rc.1
3.封装 MD5 加密
import { CryptoJS } from '@ohos/crypto-js';// MD5 加密函数
export function encryptMD5(str: string) {// 计算MD5摘要const wordArray = CryptoJS.MD5(str)// 将MD5摘要转换为字符串return wordArray.toString()
}
4.使用 MD5 加密
import { encryptMD5 } from '../../../common/utils';// 持久化存储密码
savePassword() {// 1. 保存图形密码if (this.routerParams.patternPassword) {// 密码保存前,需要通过 MD5 加密存储this.privacySettings.patternPassword = encryptMD5(this.routerParams.patternPassword.toString())}// 2. 保存密保问题 + 答案this.privacySettings.protectQuestionIndex = this.activeIndex // 下标不能加密,因为 MD5 为单向加密this.privacySettings.protectQuestionAnswer = encryptMD5(this.answerText) // 问题答案需要加密// 3. 跳转页面if (this.routerParams.patternPassword) {// 有路由参数,表示首次设置密保,跳转到隐私空间首页router.pushUrl({ url: 'pages/Privacy/PrivacyIndexPage' })} else {// 没有路由参数,表示修改密保问题,返回上一页即可router.back()}
}