📅  最后修改于: 2023-12-03 14:58:43.334000             🧑  作者: Mango
在计算机科学中,数据(Data)是指计算机中存储的各种信息,例如数字、文本、图像等。而哈希(Hash)则是一种将任意大小的数据映射成固定大小值的算法。
在编程中,我们经常需要处理各种数据。数据可以分为两大类:
原始数据类型是计算机硬件能够直接支持的数据类型,常见的包括:
1
、-5
、42
等。3.14
、-1.23e-4
等。true
和 false
。a
、~
、\n
等。在程序中,我们可以用变量来存储和使用数据:
# 声明一个整数变量
x = 42
# 声明一个布尔值变量
is_valid = True
# 声明一个浮点数变量
pi = 3.141592653589793
# 声明一个字符变量
ch = 'a'
复合数据类型是由多个原始数据类型组合而成的数据类型,常见的包括:
在程序中,我们可以用复合数据类型来组织和操作数据:
# 声明一个整数数组
numbers = [1, 2, 3, 4, 5]
# 声明一个结构体类型
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 声明一个类对象
person = Person('Alice', 20, 'Female')
哈希是一种将任意大小的数据映射成固定大小值的算法,常用于数据的加密、验证、索引等场合。哈希算法需要满足以下特点:
常见的哈希函数包括:
在程序中,我们可以用哈希函数来加密数据、验证数据的完整性、快速查找数据等:
import hashlib
# 计算一个字符串的 MD5 哈希值
def md5(s):
return hashlib.md5(s.encode()).hexdigest()
# 计算一个字符串的 SHA-256 哈希值
def sha256(s):
return hashlib.sha256(s.encode()).hexdigest()
# 加密一个密码明文,并存储其哈希值
password = '123456'
password_hash = md5(password)
store_password_hash_in_database(password_hash)
# 验证用户输入的密码是否正确
input_password = get_password_from_user()
if md5(input_password) == password_hash:
login()
else:
show_error_message('Wrong password!')
# 在数组中查找一个元素的位置
def find_element(array, element):
for i, v in enumerate(array):
if sha256(v) == sha256(element):
return i
return -1
# 计算一个文件的 MD5 哈希值
def md5_file(filename):
with open(filename, 'rb') as f:
return hashlib.md5(f.read()).hexdigest()