AES、DES、RSA
在JavaScript逆向中,AES、DES和RSA是常见的加密算法,它们都有各自的加密和解密方法。以下是这三个算法的核心变量和算法:
一:AES(高级加密标准)
:
AES有三种不同的密钥长度:128位、192位和256位,其中128位是最常用的。以下是AES算法的核心变量和算法:
核心变量:
- key: 加密/解密使用的密钥,长度为128、192或256位。
- iv: 初始化向量,用于增加加密的随机性。
- plaintext: 明文。
- ciphertext: 密文。
加密算法:
- 根据所选的密钥长度选择加密轮次和轮密钥。
- 将明文分块,每个块的大小为128位。
- 对每个块执行以下步骤:
- 添加初始化向量。
- 使用轮密钥和加密算法进行加密。
- 返回密文。
解密算法:
- 根据所选的密钥长度选择解密轮次和轮密钥。
- 将密文分块,每个块的大小为128位。
- 对每个块执行以下步骤:
- 使用轮密钥和解密算法进行解密。
- 移除初始化向量。
- 返回明文。
二:DES(数据加密标准)
:
DES是一种对称加密算法,其密钥长度为56位。以下是DES算法的核心变量和算法:
核心变量:
- key: 加密/解密使用的密钥,长度为56位。
- iv: 初始化向量,用于增加加密的随机性。
- plaintext: 明文。
- ciphertext: 密文。
加密算法:
- 对密钥进行处理,生成16个子密钥。
- 将明文分块,每个块的大小为64位。
- 对每个块执行以下步骤:
- 添加初始化向量。
- 使用16个子密钥和加密算法进行加密。
- 返回密文。
解密算法:
- 对密钥进行处理,生成16个子密钥。
- 将密文分块,每个块的大小为64位。
- 对每个块执行以下步骤:
- 使用16个子密钥和解密算法进行解密。
- 移除初始化向量。
- 返回明文。
三:RSA(公钥加密算法)
:
RSA是一种非对称加密算法,它使用公钥和私钥进行加密和解密。以下是RSA算法的核心变量和算法:
核心变量:
- publicKey: 公钥,用于加密。
- privateKey: 私钥,用于解密。
- plaintext: 明文。
- ciphertext: 密文。
加密算法:
-
选择两个大素数p和q,计算n=pq。
-
计算欧拉函数φ(n) = (p-1)(q-1)。
-
选择一个与φ(n)互质的整数e作为公钥的指数,使得1 < e < φ(n)。
-
计算d,使得ed ≡ 1 (mod φ(n)),d作为私钥的指数。
-
将明文转换为一个整数m,使得m < n。
-
对明文进行加密,得到密文c,公式为:c = m^e (mod n)。
-
返回密文。
解密算法:
- 使用私钥d对密文c进行解密,得到明文m,公式为:m = c^d (mod n)。
- 返回明文。
这三个算法的核心变量和算法可以在逆向工程中用于理解加密和解密的过程,但具体的实现可能因语言和库而异。在JavaScript中,可以使用crypto库来实现这些算法。
注意:
crypto
和crypto-js
都是用于加密和解密的 JavaScript 库,但是它们的用途和实现方式有所不同。在 Node.js 中,可以使用crypto
模块进行加密和解密操作;在浏览器中,可以使用crypto-js
库进行加密和解密操作。也就是crypto包含crypto-js,一般我们用crypto-js;(md5一般用crypto)
据我观察:一般不会去用crypto,这个库代码行数比另一个多了一两行
官方参考文档
:https://cryptojs.gitbook.io/docs/
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17233658.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步