Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
夜猫逐梦
MyOpen
提交
a8bad6dc
M
MyOpen
项目概览
夜猫逐梦
/
MyOpen
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
MyOpen
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a8bad6dc
编写于
5月 24, 2023
作者:
K
Knine
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2023-05-21--协议实现网页登录
上级
197da32a
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
131 addition
and
0 deletion
+131
-0
steam/2023-05-21--协议实现网页登录/package.json
steam/2023-05-21--协议实现网页登录/package.json
+12
-0
steam/2023-05-21--协议实现网页登录/src/crypto/jsbn.js
steam/2023-05-21--协议实现网页登录/src/crypto/jsbn.js
+0
-0
steam/2023-05-21--协议实现网页登录/src/crypto/rsa.js
steam/2023-05-21--协议实现网页登录/src/crypto/rsa.js
+107
-0
steam/2023-05-21--协议实现网页登录/src/main.js
steam/2023-05-21--协议实现网页登录/src/main.js
+12
-0
未找到文件。
steam/2023-05-21--协议实现网页登录/package.json
0 → 100644
浏览文件 @
a8bad6dc
{
"name"
:
"steam-login"
,
"version"
:
"1.0.0"
,
"description"
:
""
,
"main"
:
"index.js"
,
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
,
"dev"
:
"node src/main.js"
},
"author"
:
""
,
"license"
:
"ISC"
}
steam/2023-05-21--协议实现网页登录/src/crypto/jsbn.js
0 → 100644
浏览文件 @
a8bad6dc
此差异已折叠。
点击以展开。
steam/2023-05-21--协议实现网页登录/src/crypto/rsa.js
0 → 100644
浏览文件 @
a8bad6dc
var
RSAPublicKey
=
function
(
$modulus_hex
,
$encryptionExponent_hex
)
{
this
.
modulus
=
new
BigInteger
(
$modulus_hex
,
16
);
this
.
encryptionExponent
=
new
BigInteger
(
$encryptionExponent_hex
,
16
);
};
var
Base64
=
{
base64
:
"
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
"
,
encode
:
function
(
$input
)
{
if
(
!
$input
)
{
return
false
;
}
var
$output
=
""
;
var
$chr1
,
$chr2
,
$chr3
;
var
$enc1
,
$enc2
,
$enc3
,
$enc4
;
var
$i
=
0
;
do
{
$chr1
=
$input
.
charCodeAt
(
$i
++
);
$chr2
=
$input
.
charCodeAt
(
$i
++
);
$chr3
=
$input
.
charCodeAt
(
$i
++
);
$enc1
=
$chr1
>>
2
;
$enc2
=
((
$chr1
&
3
)
<<
4
)
|
(
$chr2
>>
4
);
$enc3
=
((
$chr2
&
15
)
<<
2
)
|
(
$chr3
>>
6
);
$enc4
=
$chr3
&
63
;
if
(
isNaN
(
$chr2
))
$enc3
=
$enc4
=
64
;
else
if
(
isNaN
(
$chr3
))
$enc4
=
64
;
$output
+=
this
.
base64
.
charAt
(
$enc1
)
+
this
.
base64
.
charAt
(
$enc2
)
+
this
.
base64
.
charAt
(
$enc3
)
+
this
.
base64
.
charAt
(
$enc4
);
}
while
(
$i
<
$input
.
length
);
return
$output
;
},
decode
:
function
(
$input
)
{
if
(
!
$input
)
return
false
;
$input
=
$input
.
replace
(
/
[^
A-Za-z0-9
\+\/\=]
/g
,
""
);
var
$output
=
""
;
var
$enc1
,
$enc2
,
$enc3
,
$enc4
;
var
$i
=
0
;
do
{
$enc1
=
this
.
base64
.
indexOf
(
$input
.
charAt
(
$i
++
));
$enc2
=
this
.
base64
.
indexOf
(
$input
.
charAt
(
$i
++
));
$enc3
=
this
.
base64
.
indexOf
(
$input
.
charAt
(
$i
++
));
$enc4
=
this
.
base64
.
indexOf
(
$input
.
charAt
(
$i
++
));
$output
+=
String
.
fromCharCode
((
$enc1
<<
2
)
|
(
$enc2
>>
4
));
if
(
$enc3
!=
64
)
$output
+=
String
.
fromCharCode
(((
$enc2
&
15
)
<<
4
)
|
(
$enc3
>>
2
));
if
(
$enc4
!=
64
)
$output
+=
String
.
fromCharCode
(((
$enc3
&
3
)
<<
6
)
|
$enc4
);
}
while
(
$i
<
$input
.
length
);
return
$output
;
}
};
var
Hex
=
{
hex
:
"
0123456789abcdef
"
,
encode
:
function
(
$input
)
{
if
(
!
$input
)
return
false
;
var
$output
=
""
;
var
$k
;
var
$i
=
0
;
do
{
$k
=
$input
.
charCodeAt
(
$i
++
);
$output
+=
this
.
hex
.
charAt
((
$k
>>
4
)
&
0xf
)
+
this
.
hex
.
charAt
(
$k
&
0xf
);
}
while
(
$i
<
$input
.
length
);
return
$output
;
},
decode
:
function
(
$input
)
{
if
(
!
$input
)
return
false
;
$input
=
$input
.
replace
(
/
[^
0-9abcdef
]
/g
,
""
);
var
$output
=
""
;
var
$i
=
0
;
do
{
$output
+=
String
.
fromCharCode
(((
this
.
hex
.
indexOf
(
$input
.
charAt
(
$i
++
))
<<
4
)
&
0xf0
)
|
(
this
.
hex
.
indexOf
(
$input
.
charAt
(
$i
++
))
&
0xf
));
}
while
(
$i
<
$input
.
length
);
return
$output
;
}
};
var
RSA
=
{
getPublicKey
:
function
(
$modulus_hex
,
$exponent_hex
)
{
return
new
RSAPublicKey
(
$modulus_hex
,
$exponent_hex
);
},
encrypt
:
function
(
$data
,
$pubkey
)
{
if
(
!
$pubkey
)
return
false
;
$data
=
this
.
pkcs1pad2
(
$data
,(
$pubkey
.
modulus
.
bitLength
()
+
7
)
>>
3
);
if
(
!
$data
)
return
false
;
$data
=
$data
.
modPowInt
(
$pubkey
.
encryptionExponent
,
$pubkey
.
modulus
);
if
(
!
$data
)
return
false
;
$data
=
$data
.
toString
(
16
);
if
((
$data
.
length
&
1
)
==
1
)
$data
=
"
0
"
+
$data
;
return
Base64
.
encode
(
Hex
.
decode
(
$data
));
},
pkcs1pad2
:
function
(
$data
,
$keysize
)
{
if
(
$keysize
<
$data
.
length
+
11
)
return
null
;
var
$buffer
=
[];
var
$i
=
$data
.
length
-
1
;
while
(
$i
>=
0
&&
$keysize
>
0
)
$buffer
[
--
$keysize
]
=
$data
.
charCodeAt
(
$i
--
);
$buffer
[
--
$keysize
]
=
0
;
while
(
$keysize
>
2
)
$buffer
[
--
$keysize
]
=
Math
.
floor
(
Math
.
random
()
*
254
)
+
1
;
$buffer
[
--
$keysize
]
=
2
;
$buffer
[
--
$keysize
]
=
0
;
return
new
BigInteger
(
$buffer
);
}
};
steam/2023-05-21--协议实现网页登录/src/main.js
0 → 100644
浏览文件 @
a8bad6dc
// ReferenceError: navigator is not defined
global
.
navigator
=
{
userAgent
:
'
node.js
'
,
};
require
(
"
./crypto/jsbn.js
"
)
require
(
"
./crypto/rsa.js
"
)
function
main
()
{
}
main
()
console
.
log
(
"
leave
"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录