Mathematics-基础:散列函数

  一,概念:

  散列(HASH)函数H也称哈希函数。是典型的多到一的函数,其输入为一可变长x(可以足够的长),输出一固定长的串h(一般为128位、160位,比输入的串短),该串h被称为输入x的Hash值。

  二,散列函数是安全的是指它具有:

  一致性:相同的输入产生相同的输出。

  随机性:消息摘要外观是随机的,以防被猜出源消息。

  唯一性:几乎不可能找到两个消息产生相同的消息摘要。

  单向性:即如果给出输出,则很难确定出输入消息。

  三,Hash函数H一般满足以下几个基本要求:

  (1)输入x可以为任意长度;输出数据串长度固定;

  (2)正向计算容易,即给定任何x,容易算出H(x);反向计算困难,即给出一Hash值h,很难找出一特定输入x,使h=H(x);

  (3)抗冲突性(抗碰撞性),包括两个含义,一是给出一消息x,找出一消息y使H(x)=H(y)是计算上不可行的(弱抗冲突),二是找出任意两条消息x、y,使H(x)=H(y)也是计算上不可行的(强抗冲突)。

  四,对Hash函数有两种穷举攻击:

  一是给定消息的Hash函数H(x),破译者逐个生成其他文件y,以使H(x)=H(y)。二是攻击者寻找两个随机的消息:x,y,并使H(x)=H(y)。这就是所谓的冲突攻击。穷举攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于Hash值的长度。

转载于:https://www.cnblogs.com/CPYER/p/3260112.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码定义了一个课程类 `Course`,包含了课程名称、学分和上课时间等属性,以及添加课程和打印课程的方法。另外还定义了一个 `choose_class()` 函数,让用户选择课程并添加到课程列表中。 但是,这段代码存在几个问题: 1. `courses` 属性应该在类的外部定义,而不是在 `__init__` 方法中定义。否则每次实例化对象时都会创建一个新的空列表,而无法保留已经添加的课程。 2. 在 `choose_class()` 函数中,应该先创建一个 `Course` 对象,再将其添加到课程列表中。而不是直接调用 `add_course()` 方法,因为该方法需要先获取对应的 `Course` 对象。 3. 在 `choose_class()` 函数中,应该加上异常处理,防止用户输入不合法的选项。 修改后的代码如下: ``` class Course: courses = [] def __init__(self, name, credit, time): self.name = name self.credit = credit self.time = time def add_course(self,course): self.courses.append(course) def print_courses(self): for course in self.courses: print(course.name) def choose_class(): print('''1. 'Advanced Mathematics', 'credit:4', 'Monday 8:30-10:10' 2. 'College English', 'credit:3', 'Tuesday 2:30-4:10' 3. 'Computer programming', 'credit:4', 'Wednesday 10:30-12:10' 4. 'Computer Design', 'credit:3', 'Thursday 4:30-6:10' ''') ch = input('Please choose the class that you want:') try: ch = int(ch) if ch == 1: course = Course('Advanced Mathematics', 4, 'Monday 8:30-10:10') elif ch == 2: course = Course('College English', 3, 'Tuesday 2:30-4:10') elif ch == 3: course = Course('Computer programming', 4, 'Wednesday 10:30-12:10') elif ch == 4: course = Course('Computer Design', 3, 'Thursday 4:30-6:10') else: raise ValueError Course.courses.append(course) except ValueError: print("Invalid option") choose_class() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值