千家信息网

使用curl操作github API V3(1)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Curl,官方解释是一个命令行工具,用来传输URI资源数据,支持HTTP,HTTPS,FTP,FTPS,IMAP等。支持HTTP GET/PUT, FTP Uploading等,也支持代理,SSL等,
千家信息网最后更新 2026年10月31日使用curl操作github API V3(1)

Curl,官方解释是一个命令行工具,用来传输URI资源数据,支持HTTP,HTTPS,FTP,FTPS,IMAP等。支持HTTP GET/PUT, FTP Uploading等,也支持代理,SSL等,可以说是一个强大网络操作工具。最新版本是7.29. 官方网站是http://curl.haxx.se。 相对应的Curl还提供了一个libcurl作为一个容易使用的客户端URL传输库,同样支持以上特点 。使用Curl 操作GITHUP,需要涉及到三个概念,第一个概念就是GITHUP网站是HTTPS,不是HTTP,是SSL加密网站。第二个GITHUP API是OATH授权的,第三个是CURL的一些基本操作。首先看HTTPS是一个什么概念。

1)HTTPS,通常意义上就是HTTP协议都是传输的公开文本数据,任何一台中间代理机器都可以截取并查看这些数据,要使这些数据虽然被截取到但是不能查看,那怎么办呢?唯一个办法就是加密。那么怎么加密呢?怎么解密呢?显然服务器端需要将数据加密然后发给客户端,客户端进行解密,客户端怎么解密呢?这就是SSL V2/V3和TLS协议。因为这一块比较复杂,那么首先从数据的加密与解密来说。传统的加密解密过程如下:

很显然在上述过程中我们使用的是一个相同的KEY和两套不同的加密与解密算法。在这其中,如下图所示,KEY是公共的。因为KEY是公共的并且私有保密的。所以算法不再是核心关键,也就是说就算算法公开,没有KEY也无法解密这个数据,通常设计这些KEY是非常有讲究的,因为要避免别人暴力破解。

开源安全库Openssl提供了一个工具命令可以进行上述的加密与解密过程。使用如下命令:

上述命令支持比较著名的一些通用加密算法有DES/AES等,下面使用一个文本文件试验一下:

从上面的操作中可以看出,加密与解密严重依赖于这个公共的KEY,显然这种方法无法应用于HTTP网站的通讯,HTTP网站服务端与客户端不可能预先协商一个公共密钥出来。所以经典加密在HTTP网站上基本行不通,于是出现了另外一种加密与解密方法,这就是非对称加密,与前面加密方法相对应,前述方法通常称之为对称加密。非对称加密是怎么样呢?非对称加密与对称加密最大的区别就在于加密时使用的是一个公共密钥。经过这个公共密钥加密的数据只有一个私有密钥可以解密。如下图所示:

显然这种加密与解密的过程中,公共密钥是一个关键,显然它可以公开,但是也必须确保它与私钥匹配。还有一个加密方还需要对公钥的来源进行确认,以防止非法公钥使用。这种加密与解密的过程显然会导致公钥相对于密钥的唯一性,不再是简单的密码。可能也是一个复杂的密文。也就是说我们首先要通过一定的算法算出唯一的一对公钥与私钥。因为加密与解密使用是不同的密钥,显然性能是大大受到影响。Openssl也支持这种加密方式,通常最常用的是RSA加密算法。如下图所示:

操作如下:

dvkx47@FC7R5S1 /home/cipan
# openssl genrsa -out privatekey 1024
Generating RSA private key, 1024 bit long modulus
........++++++
....++++++
e is 65537 (0x10001)

dvkx47@FC7R5S1 /home/cipan
# cat privatekey
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQD3wRgIhsejsP5nPE4T0Ux4Tf0B9SJYbl61v5RmQsXPR03PZwLJ
yomY65o079Yk7ePfXV674LUU4/jPMwJ9QpQR8i62oR8MMBUjbhLTQU5EusHXsxfY
Wr2xQwL3HQwrDW5gm5hqPxCX1hwPTlePnJ4wL6CFHa+30W02bRXcGqSpcQIDAQAB
AoGBAIwhf0JzWT/QwFQL2+2BmEsDcXNF/2MdKhyKe5lLcy7GGdCRZxZTpHgF6na+
oNTKaPTRjt+dPU7Pks8+/s1yduSCvOkViDfGvZ/lKXnj7jVA/TPFD6nsjh2F30mY
ZyZgag2pV9YnAvh2SIvcJXxvdUU3FMcPiZZqAhD4mE7pEQFBAkEA/YCdhcyu94fx
3TqfDpp2tJ8fh/py+fqPWksvhVbdq21Sqegpj4yqnZkTQVfWNAp+OgbPjK6PArKA
WbxOEfxHlQJBAPox+wixjO+x6qIn6IYS2plN3UDG05mPDACqMR80BrGWqBhhcTsD
a1Oh55IA6HmN8cxQp3m9aN9bMPzv66w5s20CQBjjIZPbLmo6vHH9qVPjsje1T4Eo
A1WrVZuFuhqbFpQX3X+0vS/MnYtvVcaaevsM9Kt5s7KaCIw5PgSRShDV9akCQEJl
YSk9dRlnLc06qgpqlnh5oW6/VQg7XgQPJloRhHU8df+CXHo8vg7Dt5DXjNo1QSXn
gYpdKaecm7OEOBbMeUECQQCV+UNy1TebuOJQIEKLTj7XXhcaH60fcD10OpB9zngc
EsjY+24AmZCR5sb1BRD1vh0dcgFSgaOfgUwMRtkEF/Ml
-----END RSA PRIVATE KEY-----

dvkx47@FC7R5S1 /home/cipan
# openssl rsa -in privatekey -pubout > pub.key
writing RSA key

dvkx47@FC7R5S1 /home/cipan
# cat pub.key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD3wRgIhsejsP5nPE4T0Ux4Tf0B
9SJYbl61v5RmQsXPR03PZwLJyomY65o079Yk7ePfXV674LUU4/jPMwJ9QpQR8i62
oR8MMBUjbhLTQU5EusHXsxfYWr2xQwL3HQwrDW5gm5hqPxCX1hwPTlePnJ4wL6CF
Ha+30W02bRXcGqSpcQIDAQAB
-----END PUBLIC KEY-----

dvkx47@FC7R5S1 /home/cipan
# openssl rsautl -in plaintext_origin -out ciphertext_rsa -inkey pub.key -pub
in -encrypt

dvkx47@FC7R5S1 /home/cipan
# cat ciphertext_rsa
x;?Q9???????UE??Qq?n!???k/????s&?5??????qr*?N':?K??4?Y?
?DI?'rFC#????????r????:r?8???Y &#?'?|??L}|?-#??SM?S`-&5XZy
dvkx47@FC7R5S1 /home/cipan
# openssl rsautl -in ciphertext_rsa -out plaintext_new_rsa -inkey privatekey -
decrypt

dvkx47@FC7R5S1 /home/cipan
# cat plaintext_new_rsa
I am a plaintext, -------------------
------------------------------------

dvkx47@FC7R5S1 /home/cipan
#

非对称加密显然最关键的一点就是公钥与密钥这一对是唯一的,那显然用私钥加密,如果能通过公钥解开,那就证明这个文件是私钥加过密的,因为一个公钥肯定只解一个私钥。当然这当中需要确定的是算法保证。如果算法不能保证这种一一对应,那是不能够进行证明的。显然目前RSA算法是可以的。如下图所示:

显然Openssl也提供了相应的命令行来支持这种操作如下图:

操作如下图:

dvkx47@FC7R5S1 /home/cipan
# ls
ciphertext crytxt.txt plaintext_new_rsa privatekey
ciphertext_rsa plaintext_new plaintext_origin pub.key

dvkx47@FC7R5S1 /home/cipan
# openssl rsautl -in plaintext_origin -out ciphertext.sig -inkey privatekey -
sign

dvkx47@FC7R5S1 /home/cipan
# ll
bash: ll: command not found

dvkx47@FC7R5S1 /home/cipan
# ls
ciphertext ciphertext_rsa plaintext_new plaintext_origin pub.key
ciphertext.sig crytxt.txt plaintext_new_rsa privatekey

dvkx47@FC7R5S1 /home/cipan
# cat ciphertext.sig
vNC:hj?%=???5S??Η?CW?=??o??!????[ ??#X?O$??U4?%1??,?w?A0Y????%???oQ???k??=
%????'?S?dvkx47@FC7R5S1 /home/cipan
# openssl rsautl -in ciphertext.sig -out plaintext_new_sign -inkey pub.key -p
ubin -verify

dvkx47@FC7R5S1 /home/cipan
# cat plaintext_new_sign
I am a plaintext, -------------------
-------------------------------------

dvkx47@FC7R5S1 /home/cipan
#

加密 算法 密钥 数据 公钥 支持 对称 就是 网站 命令 客户 客户端 过程 方法 关键 工具 概念 传输 不同 复杂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网科技公司的优势 喔噻互联网科技 互联网金融科技委员会 成都仁贤领冠互联网科技有限公司 互联网企业和科技型企业 宁夏科技产业互联网案例 和信科技工业互联网 晓花互联网科技有限公司网址 宜昌元轩互联网科技有限公司 互联网科技大奖都有哪些公司 烟台灵鸽互联网科技有限公司 区块链结合互联网科技 南京一网一红互联网科技有限公司 扫呗互联网科技有限公司 江苏互联网智能科技产品出厂价 张家口科技产业互联网平台 广东猫王互联网科技有限公司电话 东风日产互联网科技公司叫什么 互联网 科技节活动 微视频大赛 蓝思科技飞鸽互联网 今日互联网科技 互联网科技公司发展 致骋互联网科技 佩信高科技互联网 衡水科技产业互联网平台 电子科技大学互联网创业大赛 佛山市拉法互联网科技有限公司 云南省自由互联网科技有限公司 陕西云淼互联网科技公司
0