算法的开销
1. 加密技术不能实现
加密技术不能实现基于ip头信息的包过滤。
现代对称密钥加密技术可以分为流密码加密和分组密码加密两种。流密码加密技术推广了一次性密码本的方案,只是为了密钥的可管理性牺牲了可证明的安全性。
分组密码加密技术从某种意义上看是经典的电报粗顷密码本方案的推广。在分组密码加密方案中,密钥决定裤凳乎了密码本,只要密钥保持不变,就意味着使用同一个密码本。反过来当密钥改变时,就相当于选择了一个不同的密码本。
(1)算法的开销扩展阅读:
加密技术介绍如下:
加密算法的加密需要符合机密性:保证数据即使被盗取,小偷也不知道是啥。保证数据在传输过程中即使被劫持修改,接收方能够发现信息已被截取,而选择换掉。保证加密算法的开销、复杂度都在可用范围。
结合上述诉求,加密算法的发展主要经历了古典密码和现代密码两个重要时期。标志着加密算法的重心转移往应用数学上的转移。于是,逐渐衍生出了当今重要的三类加密算法胡悉:非对称加密、对称加密以及哈希算法。
2. 一个算法的‘计算量’该如何量化
这问题提的好。衡量算法开销通常使用O()运算符由于同一个算法运行于不同的机器上所耗费的实际时间是不同的,所以不能使用实际时间单位衡量算法运行效率,而应使用逻辑单位。描述算法复杂度的参数为算法的输入数据规模,通常用n来表示,那么算法的复杂度可表示为一个关于n的函数。通常最常用的描述算法复杂度的符号为O符号,即将复杂度表示为O(f(n))。其中f(n)用函数形式描述算法执行命令条数与输入规模n的关系,而O()起到估算化简的作用。比如某个算法经过逻辑分析后,其指令数可表示为f(n)=8n^2+10n+500,那么可以使用O(f(n))来简化其表达,O()符号运算性质有多条,总体来说就是保留增长率最高的项且忽略常数系数,上面的表达式化简结果为O(n^2)。当然O()符号不能完美描述算法开销,因为它忽略了常数的影响,当某些项前的常数系数非常非常大时,会对算法复杂度的判断造成误差,这就要具体问题具体分析了。下面简单说一下具体如何分析。for (i = 0;ik *= i;}这段代码每次循环中执行一次乘法两次赋值(假定乘法使用单周期乘法器实现),循环开始执行一次赋值,那么共计执行指令数3n+1,即复杂度为O(n)。for (i = 0;ifor (j = 0;jk += i * j;}循环嵌套时,内层循环执行3n+1条指令,外层循环n次,共n*(3n+1)+1=3n^2 + n +1条指令,即O(n^2)。
3. 算法分析的目的是什么
回答如下:
目的是评价算法的效率,通过评价可以选用更加好更加适合的算法来完成。