网络系统与通信实现

重要通知

基本概况

翻墙软件

Ghelper

先从百度云盘下载,然后转移到本地电脑安装即可。

本地远程隧道工具

无需公网IP、无需路由器端口映射,让内网应用随时可以通过域名进行外网访问。

ngrok内网穿透

ngrok 是可编程网络边缘,无需更改代码即可为您的应用程序增加连接性、安全性和可观察性。假设你在本机上启动了一个端口号为3000的服务,我们使用ngrok将当前3000端口的服务映射到外网去。

win安装配置

  • 下载 ngrok.zip
  • win安装:双击 ngrok.zip 即可将其解压缩,出现命令行工具。
  • 连接您的帐户:ngrok config add-authtoken 2COfp9AxgmNDOHMfHKYuf67FnqP_61xvaYGxxJ3K7vBVoU6mP

macOS安装

# 下载后,将压缩包移动至/Applications
> unzip ngrok.zip

# 打开命令行
> cd /Applications

# 对 ngrok 代理进行身份验证。您只需要这样做一次。Authtoken 保存在默认配置文件中。
> ngrok config add-authtoken 2COfp9AxgmNDOHMfHKYuf67FnqP_61xvaYGxxJ3K7vBVoU6mP
# 出现如下信息
Authtoken saved to configuration file: /Users/apple/Library/Application Support/ngrok/ngrok.yml

> ngrok http 80 # 启动将 HTTP 隧道转发到本地端口 80

Cloudflare 隧道

贝锐花生壳

反向代理

# 查看代理
env | grep

# 临时设置代理

export http_proxy=https://sub.101dnss.com/s/K4de9Fk0
export https_proxy=https://sub.101dnss.com/s/K4de9Fk0

# 取消设置代理
unset http_proxy
unset https_proxy



# 永久设置代理
> vim /etc/profile
http_proxy=http://username:password@ip:port/
https_proxy=http://username:password@ip:port/

OpenSSL

查看版本:openssl version >> OpenSSL 1.1.1g FIPS 21 Apr 2020

  • https://www.openssl.org/source/

加密解密技术

简介与核心思想

明文:指没有加密的原始文本,例如文字、字符串等 密文:指加密后的文本 密钥:用来对数据进行编码和解码的一种算法;

非对称加密算法

公开密钥(publickey) 私有密钥 (privatekey) 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

对称加密算法

文件加密和解密使用相同的密钥

国际数据加密算法(IDEA)

对称加密与非对称加密的区别?

对称加密:加密与解密使用同一个秘钥,对称加密的安全性相对较低。 非对称加密:加密使用公钥,解密使用私钥,非对称加密的安全性较高。

MD5

GitHub:https://github.com/blueimp/JavaScript-MD5 简介:MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value)。 缺陷:2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。 实现原理:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 破解方法: 因为过程不可逆,所以只能采用穷举法

<script src="./source/md5.js"></script>
<script>
  var code = "123456";
  var username = "123456";
  var password = "123456";

  console.log(hex_md5("123456"));                   // e10adc3949ba59abbe56e057f20f883e
  console.log(b64_md5("123456"));                   // 4QrcOUm6Wau+VuBX8g+IPg
  console.log(str_md5("123456"));                   // áÜ9IºY«¾VàWò��>
  console.log(hex_hmac_md5(code, code));            // 30ce71a73bdd908c3955a90e8f7429ef
  console.log(b64_hmac_md5(username, username));    // MM5xpzvdkIw5VakOj3Qp7w
  console.log(str_hmac_md5(password, password));    // 0Îq§;Ý��9U©��t)ï
</script>

sha1

GitHub:https://github.com/emn178/js-sha1 简介:一种被广泛使用的密码散列函数,SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数,SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 缺陷: 实现原理:

AES/DES加密解密

技术文档:https://cdnjs.com/libraries/crypto-js 数据加密标准(DES)

sha256

NPM:https://www.npmjs.com/package/js-sha256 简介:对于任意长度的消息,SHA256都会产生一个256位的哈希值,称作消息摘要。这个摘要相当于是个长度为32个字节的数组,通常有一个长度为64的十六进制字符串来表示,其中1个字节=8位,一个十六进制的字符的长度为4位。 缺陷: 实现原理:

RSA

哈希函数(散列算法)

源数据: 单向密码体制:一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。

很难找到逆向规律

数字签名

常见问题与释疑

Last Updated:
Contributors: 709992523