SHA-1算法
SHA-1(Secure Hash Algorithm 1)是一种广泛使用的密码散列函数,生成160位(20字节)的哈希值。尽管已被证实存在安全漏洞并逐步被SHA-2和SHA-3取代,但其算法设计仍具学习价值。 消息预处理填充消息:确保消息长度为512bit的倍数减64bit(即长度L ≡ 448 mod 512)。 第一位补 “1”,其余位补足够的0,直至满足长度 ≡ 448 mod 512 附加64位的原始消息长度(以位为单位,大端表示) 分块处理 将填充后的消息分割为多个 512位 的块。每个块进一步分为 16个32位字(记为 W[0] 到 W[15])。 扩展字生成将16个32位字扩展为 80个字(W[0] 到 W[79]): 对 t ≥ 16, W[t]=ROTL1(W[t−3]⊕W[t−8]⊕W[t−14]⊕W[t−16])其中,ROTLn 表示循环左移 n 位,⊕ 表示异或。 初始化哈希值SHA-1使用5个32位初始常量: H0 = 0x67452301H1 = 0xEFCDAB89H2 =...
HMAC算法
核心结构 HMAC的公式为:HMAC(K,m)=H( (K⊕opad) || H ( (K⊕ipad) || m) ) 其中: H:哈希函数(如SHA-256)。 K:密钥,需处理为与哈希函数块长度一致。 ipad = 00110110 (0x36) 不断循环直至达到散列函数分组长度 opad = 01011100 (0x5c) 不断循环直至达到散列函数分组长度 || :拼接操作。 密钥处理 若 密钥长度 < Hash的分组长度:key = 密钥0000…(末尾填充0,直到长度达到Hash分组长度) 若 密钥长度 > Hash的分组长度: key = Hash( 密钥 ) (将密钥进行单向散列的结果作为key) 计算步骤 生成内部填充:Si = K ⊕ ipad 计算内部哈希:InnerHash=H(Si || m ) 生成外部填充:So = K ⊕ opad 计算最终HMAC:HMAC=H(So ||...
Diffie-Hellman密钥交换算法
Diffie-Hellman(DH)密钥交换算法是密码学中第一个实用的公钥协议,由Whitfield Diffie和Martin Hellman于1976年提出。它允许双方在不安全的信道上协商出一个共享密钥,无需预先共享秘密,其安全性依赖于离散对数问题(Discrete Logarithm Problem, DLP)。 核心思想 目标:双方(Alice和Bob)无需预先共享任何秘密,通过公开交换参数生成相同的密钥,用于后续加密通信 数学原理:基于离散对数问题(Discrete Logarithm Problem, DLP)的计算复杂性。已知大质数 p、生成元 g、以及 A = gamod p,计算私钥 a 是困难的 算法过程 公共参数选择 Alice、Bob双方共享一个大素数q,以及证书a,且a是q的原根 原根即 a mod q,a 2 mod q,…… a n-1 mod q 可以得到1 ~ n-1 的所有整数 密钥生成 Alice生成私钥XA:随机选择整数 a(1 < a < p-1),并计算公钥 YA = gXA...
ECC椭圆曲线加密
椭圆曲线加密(ECC,Elliptic Curve Cryptography)是一种基于椭圆曲线数学的公钥加密技术,以其高安全性和高效性著称。以下从基础概念到实际应用进行详细解析: ECC的核心优势 短密钥高安全:相比RSA,ECC的密钥长度更短。例如,256位ECC密钥的安全强度相当于3072位RSA密钥 高效计算:ECC的加密、解密和签名生成速度更快,适合资源受限环境(如物联网设备、移动端)。 带宽节省:短密钥减少数据传输量,提升网络效率。 椭圆曲线的数学基础 椭圆曲线方程 标准形式:y2 = x 3 + ax + b(其中4a3 + 27 b2 !=0,避免奇点 ) 图形特性:关于x轴对称,光滑无自交点。 椭圆曲线上的点加法 几何解释:点加(P ≠ Q):画直线通过P和Q,交曲线于第三点R,取对称点-R即为P+Q。点倍(P = Q):取P点切线,交曲线于R,对称点-R即为2P。 群结构与标量乘法 加法群:椭圆曲线上的点及无穷远点构成阿贝尔群。 标量乘法:核心操作 kP = P + P + ……...
AES加密算法
AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,用于保护电子数据的安全。它由美国国家标准与技术研究院(NIST)于2001年发布,取代了过时的DES(Data Encryption Standard)。 AES基本特性 对称加密:加密和解密使用相同的密钥。 分组加密:每次处理固定长度的数据块(128位,即16字节)。 密钥长度:支持128位、192位和256位密钥,对应不同安全性级别。 轮数:根据密钥长度决定轮数: 128位密钥:10轮 192位密钥:12轮 256位密钥:14轮 二、AES加密流程1. 初始变换 2. 主轮循环SubBytes(字节代换) 通过16 × 16...
DES加密算法
一、DES算法背景DES(Data Encryption Standard,数据加密标准)是一种对称密钥加密算法,由IBM在1970年代设计,并于1977年被美国国家标准与技术研究院(NIST)采纳为联邦标准。尽管DES在历史上具有重要意义,但由于其密钥长度较短,现已被AES(Advanced Encryption Standard)等更安全的算法取代。 二、DES的核心特点 对称加密 加密和解密使用相同的密钥,需通过安全渠道共享密钥。 分组加密 将明文分为64位的数据块进行加密,密钥长度为56位(实际输入64位,含8位校验位)。 Feistel结构 采用16轮迭代的Feistel网络结构,每轮处理一半数据块,通过置换、替换和密钥混合实现混淆与扩散。 三、 DES的加密流程1.初始置换(IP)置换 将输入的64位明文块按初始置换表进行置换和重新排列,生成新的64位数据块,分为左半部分L0和右半部分R0 2. 16轮Feistel轮函数 扩展置换(E盒): 将32位右半部扩展到48bit 与轮密钥ki异或:...
RSA加密算法
一、RSA算法概述RSA(Rivest-Shamir-Adleman)是首个实用的非对称加密算法,基于 大数分解难题 的非对称加密,核心是生成公钥(加密)和私钥(解密)的数学关系。主要步骤如下: 密钥生成 加密过程 解密过程 图1:RSA算法示意图 二、数学基础 模运算:若 a ≡ b mod n,则 a 和 b 在模 n 下同余 欧拉定理:若 a 与 n 互质(即 gcd(a, n) = 1), aT(n) ≡ 1 mod n 其中,T(n) 是欧拉函数,表示小于 n 且与 n 互质的正整数的个数。 欧拉函数:若 n = p × q,且 p 和 q 为质数,则:T(n)=(p−1)(q−1) 三、RSA算法详细步骤1. 密钥生成步骤分解 选择大质数 随机选取两个不相等的大质数 p 和 q(实际使用至少1024位) 示例:p = 61,q = 53。 计算模数n n = p * q 示例:n = 61 × 53 = 3233。 计算欧拉函数值T(n) ...
对称密钥密码体制
对称加密(Symmetric Cryptography)是一种使用相同密钥进行加密和解密的密码学方法。与非对称加密不同,对称加密的加密方和解密方必须共享同一个密钥。以下是其核心原理、应用及特点: 核心原理 单一密钥 加密和解密使用同一个密钥(称为对称密钥) 密钥必须通过安全渠道共享,否则可能被窃取。 加密流程 明文 + 密钥 → 加密算法 → 密文。 密文 + 密钥 → 解密算法 → 明文。 常见算法 AES(Advanced Encryption Standard): 目前最广泛使用的对称加密算法,支持128/192/256位密钥。 基于替换和置换操作(如SubBytes、ShiftRows),高效且安全。 被美国政府选为标准(如保护机密信息)。 DES(Data Encryption...
公钥密码体制
产生原因在对称密钥密码体制中,加解密双方要共享同一个密钥。如何才能做到这一点呢?容易想到的两种方法: (1)双方事先约定同一密钥,这将给密钥的管理和更换带来极大的不便 (2)使用信使来传送密钥,对于高度自动化的大型计算机网络,使用信使来传送密钥显然是不合适的。尽管使用复杂但高度安全的密钥分配中心KDC可以解决该问题,但是采用公钥密码体制可以比较容易地解决该问题。 公钥密码体制使用不同的加密密钥和解密密钥,其概念是由Stanford大学的研究人员Diffie和Hellman于1976年提出的。 公钥:公开给任何人,用于加密数据或验证签名,称为公钥PK 私钥:严格保密,用于解密数据或创建签名,称为私钥SK 加密算法𝑬和解密算法𝑫都是公开的。 公钥密码体制的加密/解密过程的一般表示式 DSK(EPK(X))加密和解密运算可以对调 EPK(DSK(X)) 𝑷𝑲只能用来加密,而不能用来解密—-DPK(EPK(X)) ≠ X由于从公钥𝑷𝑲不能推导出私钥𝑺𝑲,并且𝑷𝑲不能用来解密,因此𝑷𝑲可以是公开的。 ...
Twikoo私有部署
在自己的服务器端部署Twikoo 服务端下载安装Node.js一键式安装Node.js 123456789cd /tmp && wget https://nodejs.org/dist/latest/node-v23.8.0-linux-x64.tar.xztar xf node-v23.8.0-linux-x64.tar.xzmv node-v23.8.0-linux-x64 /usr/local/nodeln -s /usr/local/node/bin/node /bin/nodeln -s /usr/local/node/bin/npm /bin/npmecho 'export PATH=/usr/local/node/bin:$PATH' >> /etc/profilesource /etc/profilenode -vnpm -v 安装Twikoo server1npm i -g tkserver 根据需要配置环境变量 启动 Twikoo server12tkserver# Linux 服务器可以用 nohup...