草庐IT

密码学奇妙之旅、03 HMAC单向散列消息认证码、Golang代码

HMAC单向散列消息认证码消息认证码MAC是用于确认完整性并进行认证的技术,消息认证码的输入包括任意长度的消息和一个发送者和接收者之间共享的密钥(可能还需要共享盐值)。HMAC是使用单向散列函数来构造消息认证码的方法,任何高强度单向散列函数都可以被用于HMAC,具体方法如下图所示。发送者需要同时把消息和认证码发送给接收者,接收者接收了两者,并根据接收到的消息和共享的密钥生成认证码进行比较。如果相同则消息未被篡改且认证成功。MAC不能保证信息的机密性!MAC无法对第三方"C"证明,因为"A","B"两者都有密钥,都可以生成消息和MAC。因此第三方不知道是谁生成的,更不知道消息的真实性。MAC无法

密码学奇妙之旅、03 HMAC单向散列消息认证码、Golang代码

HMAC单向散列消息认证码消息认证码MAC是用于确认完整性并进行认证的技术,消息认证码的输入包括任意长度的消息和一个发送者和接收者之间共享的密钥(可能还需要共享盐值)。HMAC是使用单向散列函数来构造消息认证码的方法,任何高强度单向散列函数都可以被用于HMAC,具体方法如下图所示。发送者需要同时把消息和认证码发送给接收者,接收者接收了两者,并根据接收到的消息和共享的密钥生成认证码进行比较。如果相同则消息未被篡改且认证成功。MAC不能保证信息的机密性!MAC无法对第三方"C"证明,因为"A","B"两者都有密钥,都可以生成消息和MAC。因此第三方不知道是谁生成的,更不知道消息的真实性。MAC无法

WEB自动化-03-Cypress 测试框架概述

3Cypress测试框架概述3.1Cypress默认文件结构  在Cypress安装完成后,其生成的默认文件目录如下所示:3.1.1Fixtures  Fixture又称之为测试夹具,通常配合cy.fixture命令使用,主要用于存储测试用例的外部静态数据。其默认位置位于cypress\fixtures中,也可以根据需要配置到其他目录。Fixtures里面的静态数据通常存储在json文件中,而这部分数据通常是某个网络请求对应的响应部分,如HTTP状态码和返回值等。Fixture的应用场景通常为,当测试需要对某些外部接口进行访问并依赖于其返回值时,可以使用fixture而无需访问这些接口。3.1

WEB自动化-03-Cypress 测试框架概述

3Cypress测试框架概述3.1Cypress默认文件结构  在Cypress安装完成后,其生成的默认文件目录如下所示:3.1.1Fixtures  Fixture又称之为测试夹具,通常配合cy.fixture命令使用,主要用于存储测试用例的外部静态数据。其默认位置位于cypress\fixtures中,也可以根据需要配置到其他目录。Fixtures里面的静态数据通常存储在json文件中,而这部分数据通常是某个网络请求对应的响应部分,如HTTP状态码和返回值等。Fixture的应用场景通常为,当测试需要对某些外部接口进行访问并依赖于其返回值时,可以使用fixture而无需访问这些接口。3.1

day06-Vue03

Vue0310.组件化编程10.1基本说明官网链接:https://v2.cn.vuejs.org/v2/guide/components-registration.html在大型应用开发时,页面可以划分成很多部分。不同的页面,往往也会有相同的部分——例如可能会有相同的头部导航如果每个页面都独自开发,无疑增加了我们的开发成本。因此,我们会把页面的不同部分拆分成独立的组件,然后在不同的页面共享这些组件,避免重复开发组件(Component)是Vue.js最强大的功能之一(组件提高了复用性:界面复用性和代码复用性)组件也是一个Vue实例,也包括:data,methods,生命周期函数等组件渲染需要

day06-Vue03

Vue0310.组件化编程10.1基本说明官网链接:https://v2.cn.vuejs.org/v2/guide/components-registration.html在大型应用开发时,页面可以划分成很多部分。不同的页面,往往也会有相同的部分——例如可能会有相同的头部导航如果每个页面都独自开发,无疑增加了我们的开发成本。因此,我们会把页面的不同部分拆分成独立的组件,然后在不同的页面共享这些组件,避免重复开发组件(Component)是Vue.js最强大的功能之一(组件提高了复用性:界面复用性和代码复用性)组件也是一个Vue实例,也包括:data,methods,生命周期函数等组件渲染需要

我的Go gRPC之旅、03 简单控制台聊天室

效果使用gRPC一元通信模式和双向流通信模式写一个简单的控制台聊天室。实现创建用户和实时聊天两个功能,不考虑高性能。复习了内存同步访问Sync包的使用。用切片缓存聊天记录,新用户可以同步聊天记录。PSC:\Users\小能喵喵喵\Desktop\Go\gRPC\chatroom>tree/f├───client││go.mod││go.sum││main.go│││└───chatroom│chat_room.pb.go│chat_room_grpc.pb.go│├───proto││chat_room.pb.go││chat_room.proto││chat_room_grpc.pb.go│

我的Go gRPC之旅、03 简单控制台聊天室

效果使用gRPC一元通信模式和双向流通信模式写一个简单的控制台聊天室。实现创建用户和实时聊天两个功能,不考虑高性能。复习了内存同步访问Sync包的使用。用切片缓存聊天记录,新用户可以同步聊天记录。PSC:\Users\小能喵喵喵\Desktop\Go\gRPC\chatroom>tree/f├───client││go.mod││go.sum││main.go│││└───chatroom│chat_room.pb.go│chat_room_grpc.pb.go│├───proto││chat_room.pb.go││chat_room.proto││chat_room_grpc.pb.go│

03运算符

运算符算数运算符设:a=10,b=20运算符描述实例+加-两个对象相加a+b输出结果30-减-得到负数或是一个数减去另一个数a-b输出结果-10*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除-x除以y,操作后默认数据类型是float型b/a输出结果2.0%取模-返回除法的余数b%a输出结果0**幂-返回x的y次幂2**3为2的3次方,输出结果8//取整除-返回商的整数部分(向下取整)9//2输出结果4()优先级(1+1)*3输出结果6比较(关系)运算符设:a=10,b=20运算符描述实例==等于-比较对象是否相等(a==b)返回False!=不等于-比较两个对象是否不

03运算符

运算符算数运算符设:a=10,b=20运算符描述实例+加-两个对象相加a+b输出结果30-减-得到负数或是一个数减去另一个数a-b输出结果-10*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除-x除以y,操作后默认数据类型是float型b/a输出结果2.0%取模-返回除法的余数b%a输出结果0**幂-返回x的y次幂2**3为2的3次方,输出结果8//取整除-返回商的整数部分(向下取整)9//2输出结果4()优先级(1+1)*3输出结果6比较(关系)运算符设:a=10,b=20运算符描述实例==等于-比较对象是否相等(a==b)返回False!=不等于-比较两个对象是否不