利用数字证书的通信过程

一、基础概念

1,对称加密算法:加密使用的密钥和解密使用的密钥是相同的。

2,非对称加密算法:加密使用的密钥和解密使用的密钥是不相同的。

3,公钥密码体制:一种非对称加密算法,它的公钥和私钥是不同的,也就是说加密使用的密钥和解密使用的密钥不同。它具有三个部分:公钥、私钥、加密解密算法。一般公钥和加密解密算法公开,而私钥保密。通过加密算法和公钥对明文进行加密,得到密文;通过解密算法和私钥对密文进行解密,得到明文。

Read More »

Brainfuck编程语言简介

在1993年,Urban Müller发明了Brainfuck语言(以下简称BF),它一共只含有8个有效字符,每个有效字符就是一条指令,语言虽然极致轻量,它却是一门图灵完备的编程语言。

BF的工作机制与图灵机高度一致。首先它存储数据的方式是一个不限长的一维整数数组(纸带),里面的数值全部初始化为0。此外,有一个数据指针(读写头),每一时刻都指向数组的某一元素,指针可以向左/右移动,也可以读取/修改当前指向的元素的值。

BF语言里的8个有效字符(指令)分别是:

Read More »

C语言数组的范围初始化器

C89标准中,对数组进行初始化时,初始化列表未写全的部分会进行默认初始化,比如:char a[10] = {1, 1, 1};那么数组a中只有前三个元素会被初始化为1,后面7个元素则被默认初始化为0。

C99增加了指定初始化器(designated initializer)的特性:char a[10] = {[5] = 1};那么数组元素a[5]会被初始化为1,其余元素则默认为0。

gcc编译器(包括mingw)对“指定初始化器”语法进行了扩展从而支持“范围初始化器”语法:char a[10] = {[0 ... 4] = 1, [5] = 2, [7 ... 9] = 3};那么a[0]~a[4]=1,a[5]=2,a[6]默认=0,a[7]~a[9]=3。注意“…”两侧都必须有空格。

Read More »