计算机语言总结

为了方便执行各种各样不同的任务,描述不同的数据,先后诞生了成千上万种计算机语言。每种计算机语言都有自己的特点,分类方式有多种,按照不同的分类方式,语言的类型也不同。下面按照最常用的方式对语言分类进行大致介绍。其实这种分类方式并不完全准确,数据和代码并没有明显分界线,所以我就按照使用习惯对它们进行分类。

1、数据描述语言
数据描述语言分为基础数据描述语言以及文本标记语言,它们的界限也并不十分明确。

1.1、基础数据描述语言主要有:regex、css、xml、json、xaml
regex是正则表达式语法,几乎所有的通用编程语言都能使用正则表达式,但让人意外的是不同语言的regex语法不完全一样,有些有细微区别,需要仔细鉴别。另外正则表达式对于数字处理上较弱,另外语法教复杂,对于新手来说非常不友好。
css是样式标记语言的老大,主要存在于网页或视频中,网页文字或图像的样式、电影字幕通常都使用css进行描述,它的儿子们有qss(css的qt移植版)、less(语法比css先进,编译为css后通用)、sass(与less差不多)等等。
xml、json是使用最广泛的基础数据描述语言,可以描述几乎所有的数据类型,它俩语法结构上比较相似,但几乎不成对出现。xml年代较古老,所以基于它的语法变种更多;从语法上讲json更先进,能以更少的空间描述相同的数据量。它俩都有schema,用于保证格式准确。
xaml是xml的一个变种,主要用于描述.NET系列程序界面(WinForm除外的窗口程序)。描述界面的语言特乱,一个框架就是一种界面描述语言,比如.NET、安卓等,所以跨框架迁移是一件非常麻烦的事。
继续阅读计算机语言总结

加密介绍


加密通讯总共有四大类,签名算法、对称加密算法、非对称加密算法与量子加密技术,下面分别对几大类算法进行介绍

1、签名算法

代表算法:md5、sha1、crc32
有的地方叫签名算法,有的地方叫哈希算法,有的地方叫指纹算法、数字摘要等等,都代表一个意思。在解释这个之前我先说说“哈希”的意思。哈希也叫散列,意思是,将一串任意长度数据经过某种特定的算法转为固定长度的输出。比如10000个字符将其转为20个字符,这样的算法就叫哈希算法。20个字符虽然容易重复,但随着字符的增多,重复概率将会指数级下降,但通过20个字符很容易就能确定10000个字符的范围,比如对N组10000个字符进行对比,这样做的好处是通过比对20个字符的签名就能筛选出绝大部分数据,剩下的数据经过简单的比对就行了,非常省时省力。
签名算法有什么优势呢?
(1)、校验数据准确性。数据的准确性在通信领域有着举足轻重的作用。纠错编码比如海明码等等可以使错误编码在一定范围内时对其进行纠正,但一旦超过阈值,就算使用编码纠错,最终得出的结果也是错误的。这时候就需要哈希算法对数据进行签名,以确保数据准确性。
(2)、对数据进行归纳整理。比如哈希表就基于哈希算法,将一堆数据均匀分布在哈希结构中,使得寻找某个数据非常简单方便。
(3)、做验证之用。比如用户登录界面,在客户端经过哈希算法计算之后,服务器端只需要验证结果是不是符合就可以了,不用传输整个密码。就算黑客在中途截获数据包也无法推算出密码(暂时不考虑彩虹表等玩意儿,哈希算法可以定义为信息不可逆)。
优势挺多,但劣势也比较严重:
(1)、数据不可逆。也就是说,生成的签名几乎不可能再推导回原数据。
(2)、相对来说不那么安全。彩虹表有一定概率可以在短时间破解MD5加密的密码,王小云研究出来的哈希碰撞也能在一定程度上削弱MD5的安全性。
继续阅读加密介绍