187 精币
.版本 2
.支持库 spec
.子程序 RC4_接收, 字节集, , 接收用模数
.参数 字节集数据, 字节集
.局部变量 S, 字节型, , "256"
.局部变量 K, 字节型, , "256"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 temp, 字节型, , , 交换字节用
.局部变量 Y, 整数型
.局部变量 Outp, 字节集
.局部变量 x, 整数型
.局部变量 t, 整数型
.局部变量 密码长度, 整数型
.局部变量 密码, 字节集
.局部变量 密码字节集, 字节集
.计次循环首 (256, i)
S [i] = i - 1
.计次循环尾 ()
j = 1
密码 = { 224, 163, 248, 25, 91, 101, 205, 165, 136, 241, 180, 132, 232, 104, 117, 3, 252, 116, 187, 178, 24, 76, 234, 102, 227, 109, 164, 15, 223, 122, 64, 80 } + 到字节集 (到数值 (400009999))
.计次循环首 (256, i)
.如果真 (j > 40)
j = 1
.如果真结束
K [i] = 密码 [j]
j = j + 1
.计次循环尾 ()
j = 0
.计次循环首 (256, i)
j = (j + S [i] + K [i]) % 256
temp = S [i]
S [i] = S [j + 1]
S [j + 1] = temp
.计次循环尾 ()
i = 0
j = 0
.计次循环首 (取字节集长度 (字节集数据), x)
i = (i + 1) % 256
j = (j + S [i + 1]) % 256
temp = S [i + 1]
S [i + 1] = S [j + 1]
S [j + 1] = temp
t = (S [i + 1] + S [j + 1] % 256) % 256
Y = S [t + 1]
Outp = Outp + 到字节集 (到字节 (位异或 (字节集数据 [x], Y)))
.计次循环尾 ()
返回 (Outp)
.子程序 RC4_发送, 字节集, , 发送用私钥
.参数 字节集数据, 字节集
.局部变量 S, 字节型, , "256"
.局部变量 K, 字节型, , "256"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 temp, 字节型
.局部变量 Y, 整数型
.局部变量 outp, 字节集
.局部变量 x, 整数型
.局部变量 t, 整数型
.局部变量 密码长度, 整数型
.局部变量 密码, 字节集
.局部变量 密码字节集, 字节集
.计次循环首 (256, i)
S [i] = i - 1
.计次循环尾 ()
j = 1
调试输出 (到字节集 (到数值 (300009999)))
密码 = { 50, 203, 52, 191, 46, 76, 209, 41, 171, 196, 242, 240, 56, 45, 51, 11, 31, 158, 93, 150, 36, 226, 154, 207, 216, 97, 130, 93, 14, 63, 120, 191 } + 到字节集 (到数值 (300009999))
.计次循环首 (256, i)
.如果真 (j > 40)
j = 1
.如果真结束
K [i] = 密码 [j]
j = j + 1
.计次循环尾 ()
j = 0
.计次循环首 (256, i)
j = (j + S [i] + K [i]) % 256
temp = S [i]
S [i] = S [j + 1]
S [j + 1] = temp
.计次循环尾 ()
i = 0
j = 0
.计次循环首 (取字节集长度 (字节集数据), x)
i = (i + 1) % 256
j = (j + S [i + 1]) % 256
temp = S [i + 1]
S [i + 1] = S [j + 1]
S [j + 1] = temp
t = (S [i + 1] + S [j + 1] % 256) % 256
Y = S [t + 1]
outp = outp + 到字节集 (到字节 (位异或 (字节集数据 [x], Y)))
.计次循环尾 ()
返回 (outp)
最佳答案
查看完整内容
[mw_shl_code=cpp,true]#include
#include
class RC4 {
private:
std::vector S;
int i, j;
void swap(int a, int b) {
unsigned char temp = S[a];
S[a] = S;
S = temp;
}
void initialize(const std::vector& key) {
S.resize(256);
for (int i = 0; i < 256; i++) {
S = i;
}
int j = 0;
for (int i = 0; i < 256; i++) ...