PHP中对数组的操作

数组的声明 PHP中有两种数组:索引数组和关联数组。索引数组的索引是从0开始递增的数字,由程序自动生成;关联数组使用字符串作为索引值,由用户自行输入。 初始化时直接赋值 1 2 3 4 5 6 7 8 9 //索引数组 $example[0] = "a"; $example[1] = "b"; $example[2] = "c"; //关联数组 $example_1["a"] = "1"; $example_1["b"] = "2"; $example_1["c"] = "3"; 若要按默认索引顺序声明索引数组,可以不用填入索引值,程序自动按声明顺序为键值建立索引: 1 2 3 $example[] = "a"; //索引为0 $example[] = "b"; //索引为1 $example[] = "c"; //索引为2 通过array()函数创建 1 2 3 4 5 //索引数组 $example = array("a", "b", "c"); //关联数组 $example_1 = array("a" => "1", "b" => "2", "c" => "3"); 多维数组的创建使用array()函数嵌套完成: 1 2 3 4 5 $example = array( "array1" => array("a", "b", "c"), "array2" => array("d", "e", "f"), "array3" => array("g", "h", "i") ) 数组的遍历 使用for循环遍历 1 2 3 4 5 6 7 8 9 <?php $example = array("a", "b", "c"); for($i = 0; $i < count($example); $i++){ echo $example[$i]."<br>"; } ?> 打印结果: ...

Oct. 19, 2019 · 10 min · 1960 words · Jiekang Hu

关于SSH远程登录

SSH(Secure Shell,安全外壳协议),是用于计算机之间的加密登录的一种安全协议标准。其最大的特点在于加密,这也正是它相比Telnet、FTP等其他协议的优势。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。 使用SSH登录只需要一行命令: 1 2 3 ssh 用户名@服务器IP # 默认状态 ssh 服务器IP # 当本机的用户名和服务器用户名相同时 ssh -p 8888 用户名@服务器IP # 自定义访问端口 SSH的加密方式 加密的方式主要有两种:对称加密和非对称加密。对称加密指的是加密与解密使用同一套密钥。这种加密方式在不知道密钥的情况下极其难被破解,但是在SSH这种具有多个客户端的情况下,如果大家共用一套密钥,那么只要有一个客户端的密钥发生了泄露,所有的连接都会变得不安全,所以对称加密在SSH上是不可行的,SSH使用的是非对称加密。 所谓非对称加密,就是使用公钥和私钥来对数据进行加解密。经过公钥加密的数据,只能通过私钥来解密,而通过公钥来推出私钥的可能性几乎没有。其工作流程主要分为以下几步: 客户端向服务器发送连接请求 服务器返回公钥文件,客户端使用该公钥对密码进行加密后发送给服务器 服务器使用私钥解密,并与正确密码进行比对,验证客户端的身份 比对后返回结果给客户端 可以看到,私钥是始终存在于服务器端的,即便拦截到了密文,由于没有私钥也无法进行解密,这也就保证了数据的安全性。 但是,它依然有不完美之处:首先由于SSH的密钥都是自己签发的,并不像HTTPS有CA证书,这也就使得SSH密钥的真伪性很难辨别。 如果服务器发送的公钥被拦截,随后拦截者发送另一个伪造的公钥给客户端,那么拦截者接收客户端发送的密文之后,就可以使用自己伪造的私钥来解密,随后得到密码就可以直接攻击目标服务器。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。 SSH的认证方式 使用公钥指纹认证 SSH在用户第一次登录服务器时,会发出类似于下面的信息: 1 2 3 The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? 它的意思就是:无法确认主机的真实身份,但是知道它的公钥指纹,是否继续连接? 从这里可以看出,SSH的第一种认证方式就是把公钥指纹显示给客户端,让客户端进行辨别。为什么使用公钥指纹呢?因为公钥的长度很长不便于比对(通常有1024位),于是就计算公钥的hash并生成一个128位的指纹,这样就更好比对了。 那么用户怎么知道远程主机的公钥指纹应该是多少?目前并没有很好的办法,所以远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。 如果用户确认无误,就可以输入yes,继续连接。接下来服务器会把这个客户端添加至“已信任的主机”列表(known_hosts)里。 1 2 Warning: Permanently added 'example.com (xxx.xxx.xxx.xxx)' (RSA) to the list of known hosts. Password: (enter password) 使用公钥认证 公钥认证的原理如下: ...

Oct. 14, 2019 · 1 min · 148 words · Jiekang Hu