具体可参考原理文档:[授权文件"rarreg.key"的生成](https://github.com/bitcookies/winrar-keygen/blob/master/README.HOW_DOES_IT_WORK.zh-CN.md#7-%E6%8E%88%E6%9D%83%E6%96%87%E4%BB%B6rarregkey%E7%9A%84%E7%94%9F%E6%88%90)
-### 7.2 TXT编码
+### 7.2 TXT 编码
如果你使用了如下命令:
@@ -281,7 +295,7 @@ winrar-keygen.exe "Github" "Github.com" > rarreg.key
winrar-keygen.exe "Github" "Github.com" | Out-File -Encoding ASCII rarreg.key
```
-### 7.3 Key的位置
+### 7.3 Key 的位置
如果你无法执行拖动操作,你可以尝试把 `rarreg.key` 放在以下目录中:
diff --git a/assets/README.HOW_DOES_IT_WORK.md.bak b/assets/README.HOW_DOES_IT_WORK.md.bak
deleted file mode 100644
index 336df37..0000000
--- a/assets/README.HOW_DOES_IT_WORK.md.bak
+++ /dev/null
@@ -1,321 +0,0 @@
-[GF2-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%282%29
-[GF2p15-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%282%5E%7B15%7D%29
-[GF2p15p17-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%28%282%5E%7B15%7D%29%5E%7B17%7D%29
-[A-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20A
-[B-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20B
-[D-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20D
-[G-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20G
-[M-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20M
-[P-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20P
-[h-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20h
-[k-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20k
-[l-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20l
-[n-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20n
-[r-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20r
-[s-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20s
-[T-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20T
-[UU-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20U
-[LL-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20L
-[Rnd-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Rnd
-[Temp-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Temp
-[UID-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20UID
-[Data-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data
-[Data0-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E0
-[Data1-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E1
-[Data2-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E2
-[Data3-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E3
-
-# How is "rarreg.key" generated?
-
-WinRAR uses an ECC-based signature algorithm to generate `rarreg.key`. The algorithm it used is a variant of Chinese SM2 digital signature algorithm. Different to many standard ECDSAs, the curve that WinRAR selected is a curve over composite field ![GF2p15p17-inlined].
-
-## 1. Composite field ![GF2p15p17-inlined]
-
-Elements in ground field ![GF2p15-inlined] are represented with standard basis, i.e. polynomial basis. The irreducible polynomial is
-
-
-
-
-where each coefficients is in ![GF2-inlined]. If we use
-
-
-
-
-as the standard basis of the ground field, an element ![A-inlined] in ![GF2p15-inlined] can be denoted as
-
-
-
-
----
-
-The irreducible polynomial of composite field ![GF2p15p17-inlined] is
-
-
-
-
-where each coefficients is in ![GF2p15-inlined]. If we use
-
-
-
-
-as the standard basis of the composite field, an element ![B-inlined] in ![GF2p15p17-inlined] can be denoted as
-
-
-
-
----
-
-For clarity, we use ![D-inlined], which is a 255-bits-long integer to denote an element ![B-inlined] in ![GF2p15p17-inlined]. The map between them is
-
-
-
-
-## 2. Elliptic curve over ![GF2p15p17-inlined]
-
-The equation of the elliptic curve that WinRAR uses is
-
-
-
-
-The base point ![G-inlined] is
-
-
-
-
-whose order ![n-inlined] is
-
-
-
-
-## 3. Message hash algorithm
-
-We use
-
-
-
-
-to denote a message whose length is ![l-inlined]. So the SHA1 value of ![M-inlined] should be
-
-
-
-
-where  are 5 state values when SHA1 outputs. Generally speaking, the final SHA1 value should be the join of these 5 state values while each of state values is serialized in big-endian.
-
-However, WinRAR doesn't serialize the 5 state values. Instead, it use a big integer ![h-inlined] as the hash of the input message.
-
-
-
-
-## 4. ECC digital signature algorithm
-
-We use ![k-inlined] to denote private key, ![P-inlined] to denote public key. So there must be
-
-
-
-
-If we use ![h-inlined] to denote the hash of input data, WinRAR use the following algorithm to perform signing:
-
-1. Generate a random big integer ![Rnd-inlined] which satisfies .
-
-2. Calculate ![r-inlined]
-
-
-
-
-
- where  means we take X coordinate of  and convert it from ![GF2p15p17-inlined] to a big integer.
-
- If  or , go back to step 1.
-
-3. Calculate ![s-inlined]
-
-
-
-
-
- If , go back to step 1.
-
-4. Output .
-
-## 5. WinRAR private key generation algorithm
-
-We use
-
-
-
-
-
-to denote input data whose length is ![l-inlined]. WinRAR use it to generate private key ![k-inlined].
-
-1. We use  to denote 6 32-bits-long integer. So there is
-
-
-
-
-
-2. Let .
-
-3. If , we calculate SHA1 value of ![T-inlined]. Then assign SHA1 state value  to :
-
-
-
-
-
- Otherwise, when , we let
-
-
-
-
-
-4. Regard  as counter, add itself by 1.
-
- Calculate SHA1:
-
-
-
-
-
- We takes the lowest 16 bits of  and donote it as .
-
-5. Repeat step 4 again with 14 times.
-
-6. After that, we will get . Then output private key
-
-
-
-
-
-## 6. The private key and public key of WinRAR
-
-Private key ![k-inlined] is
-
-
-
-
-
-This private key is generated by the algorithm describled in section 5 where the length of data ![T-inlined] is zero.
-
-Public key ![P-inlined] is
-
-
-
-
-
-## 7. Generation of "rarreg.key"
-
-The generation of license file `rarreg.key` requires 2 arguments:
-
-1. Username, an ANSI-encoded string, without null-terminator. Denoted as
-
-
-
-
-
-2. License type, an ANSI-encoded string, without null-terminator. Denoted as
-
-
-
-
-
-The following is the algorithm to generate `rarreg.key`.
-
-1. Use the algorithm describled in section 5, with argument ![UU-inlined], to generate private key  and public key . Then output hexlified public key string with SM2 compressed public key format. The hexlified public key is denoted as ![Temp-inlined].
-
- The length of ![Temp-inlined] should be 64. If less, pad with `'0'` until the length is 64.
-
-2. Let ![Data3-inlined] be
-
-
-
-
-
-3. Use the algorithm describled in section 5, with argument ![Data3-inlined], to generate private key  and public key . Then output hexlified public key string with SM2 compressed public key format. The hexlified public key is denoted as ![Data0-inlined].
-
- The length of ![Data0-inlined] should be 64. If less, pad with `'0'` until the length is 64.
-
-4. Let ![UID-inlined] be
-
-
-
-
-
-5. Use the algorithm describled in section 4, with argument ![LL-inlined] and private key ![k-inlined] describled section 6, to get signature .
-
- The bit length of  and  shall not be more than 240. Otherwise, repeat this step.
-
-6. Convert  and  to hex-integer string  and , without `"0x"` prefix.
-
- If the length of  or  is less than 60, pad character `'0'` until the length is 60.
-
-7. Let ![Data1-inlined] be
-
-
-
-
-
-8. Let ![Temp-inlined] be
-
-
-
-
-
- Use the algorithm describled in section 4, with argument ![Temp-inlined] and private key ![k-inlined] describled section 6, to get signature .
-
- The bit length of  and  shall not be more than 240. Otherwise, repeat this step.
-
-9. Convert  and  to hex-integer string  and , without `"0x"` prefix.
-
- If the length of  or  is less than 60, pad character `'0'` until the length is 60.
-
-10. Let ![Data2-inlined] be
-
-
-
-
-
-11. Calculate CRC32 value of
-
-
-
-
-
- The final checksum the complement of CRC32 value.
-
- Then convert the checksum to decimal string . If the length is less than 10, pad character `'0'` until the length is 10.
-
-12. Let ![Data-inlined] be
-
-
-
-
-
-13. Output with format
-
- * A fixed header `"RAR registration data"`, taking one line.
-
- * Username, taking one line.
-
- * License type, taking one line
-
- * UID, taking one line, with format:
-
-
-
-
-
- * Output ![Data-inlined], with 54 characters a line.
-
diff --git a/assets/README.HOW_DOES_IT_WORK.zh-CN.md.bak b/assets/README.HOW_DOES_IT_WORK.zh-CN.md.bak
deleted file mode 100644
index 579107a..0000000
--- a/assets/README.HOW_DOES_IT_WORK.zh-CN.md.bak
+++ /dev/null
@@ -1,319 +0,0 @@
-[GF2-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%282%29
-[GF2p15-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%282%5E%7B15%7D%29
-[GF2p15p17-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20%5Ctextrm%7BGF%7D%28%282%5E%7B15%7D%29%5E%7B17%7D%29
-[A-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20A
-[B-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20B
-[D-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20D
-[G-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20G
-[M-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20M
-[P-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20P
-[h-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20h
-[k-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20k
-[l-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20l
-[n-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20n
-[r-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20r
-[s-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20s
-[T-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20T
-[UU-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20U
-[LL-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20L
-[Rnd-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Rnd
-[Temp-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Temp
-[UID-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20UID
-[Data-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data
-[Data0-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E0
-[Data1-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E1
-[Data2-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E2
-[Data3-inlined]: http://latex.codecogs.com/svg.latex?%5Cinline%20Data%5E3
-
-# "rarreg.key"是如何生成的?
-
-WinRAR 使用了基于 ECC 的签名算法来生成 `rarreg.key` 文件,其使用的签名算法是中国 SM2 数字签名算法的变体。与各种标准 ECDSA 不同的是,WinRAR 使用的椭圆曲线是一个基于复合域 ![GF2p15p17-inlined] 上的曲线。
-
-## 1. 复合域 ![GF2p15p17-inlined]
-
-基域 ![GF2p15-inlined] 采用标准基(多项式基)来表达,采用的不可约多项式为:
-
-
-
-
-
-各项系数全部位于 ![GF2-inlined]。设基域的标准基为:
-
-
-
-
-则位于基域 ![GF2p15-inlined] 上的元素 ![A-inlined] 可以用如下方式表达:
-
-
-
-
----
-
-复合域 ![GF2p15p17-inlined] 的不可约多项式为:
-
-
-
-
-各项系数全部位于 ![GF2p15-inlined]。设复合域的标准基为:
-
-
-
-
-则位于复合域 ![GF2p15p17-inlined] 上的元素 ![B-inlined] 可以用如下方式表达:
-
-
-
-
----
-
-为了方便表述我们用255比特的大数 ![D-inlined] 来表示位于复合域 ![GF2p15p17-inlined] 上的元素 ![B-inlined]。它们的对应关系为:
-
-
-
-
-## 2. 复合域 ![GF2p15p17-inlined] 上的椭圆曲线
-
-曲线方程为:
-
-
-
-
-基点 ![G-inlined] 为:
-
-
-
-
-基点 ![G-inlined] 的阶 ![n-inlined] 为:
-
-
-
-
-## 3. 消息哈希算法
-
-设长度为 ![l-inlined] 的消息为:
-
-
-
-
-则消息 ![M-inlined] 的SHA1值为:
-
-
-
-
-其中  为SHA1算法输出时的5个状态值;将这5个状态值按照大端字节序依次输出,即为的SHA1哈希值 。
-
-WinRAR在做完SHA1计算后,采用大数 ![h-inlined] 作为ECC签名时消息的哈希:
-
-
-
-
-
-## 4. ECC签名算法
-
-设私钥为 ![k-inlined],公钥为 ![P-inlined],即:
-
-
-
-
-消息哈希为 ![h-inlined],则签名  为:
-
-1. 生成随机数 ![Rnd-inlined],满足 。
-
-2. 计算 ![r-inlined]
-
-
-
-
-
- 其中  表示取  的X坐标,同时将X坐标从 ![GF2p15p17-inlined] 转换为大数。
-
- 若  或者  则回到步骤1。
-
-3. 计算 ![s-inlined]
-
-
-
-
-
- 若  则回到步骤1。
-
-4. 输出 。
-
-## 5. WinRAR的私钥生成算法
-
-该算法会利用长度为 ![l-inlined] 的数据
-
-
-
-
-
-来生成私钥 ![k-inlined]。
-
-1. 设6个32位整数为 ,则有
-
-
-
-
-
-2. 令 。
-
-3. 如果  则计算 ![T-inlined] 的SHA1值,并将状态值  赋值给 :
-
-
-
-
-
- 否则,即  时,令:
-
-
-
-
-
-4. 把  作为计数器,自增1。
-
- 计算SHA1值:
-
-
-
-
-
- 取  的低16位并记为 。
-
-5. 步骤4再重复14次。
-
-6. 重复执行完后会得到 ,则输出私钥
-
-
-
-
-
-## 6. WinRAR的公钥和私钥
-
-WinRAR的私钥 ![k-inlined] 为:
-
-
-
-
-
-该私钥是通过算法5生成的,其中数据 ![T-inlined] 的长度为0。
-
-公钥 ![P-inlined] 为:
-
-
-
-
-
-## 7. 授权文件"rarreg.key"的生成
-
-授权文件的生成需要两个参数:
-
-1. 用户名的ANSI字符串,不包括null-terminator;记为
-
-
-
-
-
-2. 授权类型的ANSI字符串,不包括null-terminator;记为
-
-
-
-
-
-`rarreg.key` 的生成算法如下:
-
-1. 使用用户名 ![UU-inlined] 通过算法5计算出私钥  以及公钥 ,并将公钥  按照SM2压缩公钥格式以Hex字符串(ASCII编码)的形式输出。得到的Hex字符串记为临时值 ![Temp-inlined]。
-
- ![Temp-inlined] 的长度应该为64;若长度不足,则在前面补字符`'0'`,直到长度为64。
-
-2. 令字符串 ![Data3-inlined]为
-
-
-
-
-
-3. 使用 ![Data3-inlined] 通过算法5计算出私钥  以及公钥 ,并将公钥  按照SM2压缩公钥格式以Hex字符串(ASCII编码)的形式输出。得到的Hex字符串记为 ![Data0-inlined]。
-
- ![Data0-inlined] 的长度应该为64;若长度不足,则在前面补字符`'0'`,直到长度为64。
-
-4. 令字符串 ![UID-inlined]为
-
-
-
-
-
-5. 对授权类型 ![LL-inlined] 使用算法4得到签名 ,其中私钥见第6节。
-
- 要求  和  的长度都不得超过240比特,否则重复该步骤。
-
-6. 将  和  以16进制形式输出(无`"0x"`前缀),分别记为  和 。
-
- 若长度不满60,则在前面补字符`'0'`,直到长度为60。
-
-7. 令字符串 ![Data1-inlined]为
-
-
-
-
-
-8. 令字符串 ![Temp-inlined]为
-
-
-
-
-
- 对 ![Temp-inlined] 使用算法4得到签名 ,其中私钥见第6节。
-
- 要求  和  的长度都不得超过240比特,否则重复该步骤。
-
-9. 将  和  以16进制形式输出(无`"0x"`前缀),分别记为  和 。
-
- 若长度不满60,则在前面补字符`'0'`,直到长度为60。
-
-10. 令字符串 ![Data2-inlined]为
-
-
-
-
-
-11. 对
-
-
-
-
-
- 计算CRC32值,最终校验和为CRC32值的反。将校验和以10进制形式输出,若长度不满10,则在前面补字符`'0'`,直到长度为10,记为 。
-
-12. 令字符串 ![Data-inlined]为
-
-
-
-
-
-13. 格式化输出。
-
- * 固定文件头`"RAR registration data"`,占一行。
-
- * 用户名,占一行。
-
- * 授权类型,占一行。
-
- * UID,占一行:
-
-
-
-
-
- * 将 ![Data-inlined] 按照每行54个字符输出。
diff --git a/assets/fork-dark.png b/assets/fork-dark.png
index d198fa9..c902b41 100644
Binary files a/assets/fork-dark.png and b/assets/fork-dark.png differ
diff --git a/assets/fork-light.png b/assets/fork-light.png
index 155652a..6795ffb 100644
Binary files a/assets/fork-light.png and b/assets/fork-light.png differ
diff --git a/assets/push-workflows-dark.png b/assets/push-workflows-dark.png
index 528c151..2278edb 100644
Binary files a/assets/push-workflows-dark.png and b/assets/push-workflows-dark.png differ
diff --git a/assets/push-workflows-light.png b/assets/push-workflows-light.png
index 3c61dcd..eeb82e9 100644
Binary files a/assets/push-workflows-light.png and b/assets/push-workflows-light.png differ
diff --git a/assets/run-workflow-dark.png b/assets/run-workflow-dark.png
index 12bac20..13ebf07 100644
Binary files a/assets/run-workflow-dark.png and b/assets/run-workflow-dark.png differ
diff --git a/assets/run-workflow-light.png b/assets/run-workflow-light.png
index b214fd5..a3eeb32 100644
Binary files a/assets/run-workflow-light.png and b/assets/run-workflow-light.png differ
diff --git a/assets/secrets-dark.png b/assets/secrets-dark.png
index c4ef21d..4cf6b59 100644
Binary files a/assets/secrets-dark.png and b/assets/secrets-dark.png differ
diff --git a/assets/secrets-light.png b/assets/secrets-light.png
index 8b72e38..a0c4ee3 100644
Binary files a/assets/secrets-light.png and b/assets/secrets-light.png differ
diff --git a/assets/secrets-repo-dark.png b/assets/secrets-repo-dark.png
index 2879143..e0d3fc8 100644
Binary files a/assets/secrets-repo-dark.png and b/assets/secrets-repo-dark.png differ
diff --git a/assets/secrets-repo-light.png b/assets/secrets-repo-light.png
index b9c6ffd..b48e446 100644
Binary files a/assets/secrets-repo-light.png and b/assets/secrets-repo-light.png differ
diff --git a/bin/Win32-Release/winrar-keygen.exe b/bin/Win32-Release/winrar-keygen.exe
deleted file mode 100644
index c983185..0000000
Binary files a/bin/Win32-Release/winrar-keygen.exe and /dev/null differ
diff --git a/bin/x64-Release/winrar-keygen.exe b/bin/x64-Release/winrar-keygen.exe
deleted file mode 100644
index 60ab271..0000000
Binary files a/bin/x64-Release/winrar-keygen.exe and /dev/null differ