基于秘密共享的电子拍卖小程序设计与实现_第1页
基于秘密共享的电子拍卖小程序设计与实现_第2页
基于秘密共享的电子拍卖小程序设计与实现_第3页
基于秘密共享的电子拍卖小程序设计与实现_第4页
基于秘密共享的电子拍卖小程序设计与实现_第5页
已阅读5页,还剩51页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[17]。一个秘密信息K,现要将它分割成n份共享秘密,当t份共享秘密在一起时可恢复秘密信息。以下是使用Shamir秘密共享进行分割秘密和恢复秘密的过程:构造多项式:先选择一个随机素数p(p>K),构造t-1次任意系数的随机多项式,具体多项式如公式1所示,其中a1至at-1为任意系数。Fx=秘密分割:将x=1,2,...,n代入F(x),此时秘密K成功分割成了K1至Kn共n份安全的共享秘密,具体如下公式2所示。(公式2)(3)秘密恢复:当t份共享秘密在一起时,即A=(K1,K2,...,Kt),使用拉格朗日插值法恢复K,下面的公式3为恢复秘密的拉格朗日插值法。K =2.4本章小结本章主要对本文要设计的电子拍卖小程序所涉及基础知识进行简单概述,主要对微信小程序开发技术、电子拍卖的基本原理以及秘密共享进行了概述。3需求分析在本章节主要描述电子拍卖小程序所要满足的需求进行分析,该需求分为功能需求和安全需求,以便后续能按照需求来设计与实现该小程序。3.1系统概述本文需要设计和实现一个密封式电子拍卖小程序,利用微信小程序云开发技术,为用户提供便捷的在线拍卖小程序,利用Shamir秘密共享对用户的投标价进行分割保护,为买家和卖家创造一个公平、安全和高效的拍卖环境。通过该微信小程序,用户可以注册和登录账户,成为买家用户或卖家用户。卖家可以发布拍卖物品,并设置拍卖开始时间和结束时间,买家可以浏览拍卖物品,投标参与竞拍。在拍卖结束后,系统将确定并揭示最高出价者为拍卖中标得主,并将中标得主的信息提供给卖家,而买家也能得知自己是否中标,中标后将提供卖家信息给买家。该小程序的功能需要满足用户的正常使用,包括用户注册、用户登录、浏览商品、搜索商品、商品发布、管理商品、投标商品、拍卖结果查看等。在安全方面该小程序需要满足公平性、投标者匿名性、标价保密性、不可否认性、不可伪造性、可认证性等安全需求。3.2功能需求本文的电子拍卖小程序需要实现以下几个功能需求:(1)注册功能:新用户可以进行账号注册,用户通过输入用户名称、手机号、密码以及上传用户头像进行注册。(2)登录功能:当用户注册后,可通过手机号和密码进行登录。(3)商品搜索功能:用户可以在搜索框里通过输入关键词来搜索商品。(4)商品发布功能:为登录用户提供竞拍商品发布功能,通过上传商品图片,填写商品名称、商品描述、投标最低价、竞拍开始时间和竞拍结束时间来发布自己的拍卖物品。(5)商品浏览与分类:对用户发布的拍卖物品进行分类,在页面中展示商品的详细信息,方便用户进行浏览。(6)商品投标:为用户提供商品投标功能,买家用户看中商品后,通过投标来参与竞拍,同时对用户提交的标价通过秘密共享分割来进行保护。(7)商品管理:为用户提供商品管理功能,卖家用户对自己发布的商品可以进行删除。(8)拍卖结果查看:当拍卖结束后,用户可以在特定页面查看自己发布的商品拍卖结果,或者查看自己参与竞拍的商品拍卖结果。3.3安全需求本文的电子拍卖小程序需要满足以下几个安全需求:(1)公平性:在密封式电子拍卖中,公平性要求所有参与者都享有平等的竞拍机会,不受任何形式的歧视或偏袒。拍卖规则对所有参与者都是透明和一致的,确保每个投标者都能在相同条件下进行竞拍。拍卖结果应基于客观的竞拍条件,而不是人为干预或操纵。(2)投标者匿名性:在拍卖过程中,投标者的身份应保持匿名,不被其他投标者或公众所知悉。这有助于消除投标者之间的不公平竞争和偏见,鼓励更多的参与者参与拍卖。匿名性也有助于保护投标者的隐私和安全,防止个人信息被滥用或泄露。(3)不可否认性:一旦投标者提交了出价,他就不能否认这一行为。这有助于维护拍卖的诚信和权威性,防止恶意投标者通过否认出价来逃避责任。(4)不可伪造性:投标者的出价必须是真实有效的,不能被伪造或篡改。(5)标价保密性:在拍卖过程中,投标者的出价信息被严格保密,除了投标的买家之外,任何人都无法得知该买家的标价。防止恶意竞争和串通投标等行为,维护拍卖的公正性和竞争性。(6)可认证性:投标者的身份和出价行为可以被验证和确认。3.4本章小结本章针对本文所要设计的小程序进行了需求分析,详细说明了该电子拍卖小程序所要满足的功能需求和安全需求。其中功能需求主要包括用户注册功能、用户登录功能、商品搜索功能、商品发布功能、商品浏览与分类、商品投标、商品管理和拍卖结果查看等。安全需求主要包括公平性、投标者匿名性、不可否认性、不可伪造性、标价保密性和可认证性等。4基于秘密共享的电子拍卖小程序设计4.1系统功能设计系统功能设计是在系统目标和限制内,针对需求分析中的功能需求来设计系统功能。它涉及到深入了解用户需求和业务流程,同时也要考虑到系统的可用性和易用性。设计出来的系统功能在满足用户需求的同时,也要简洁美观。在设计小程序中,系统功能设计部分是核心,它描述了小程序如何满足用户需求,提供便捷、高效的拍卖体验。图4-1为本文所要设计的电子拍卖小程序的各个页面及功能示例图,小程序的主要页面分为“首页”、“分类”、“我要拍卖”以及“我的”四个页面。图4-1页面及功能图4.1.1“首页”页面设计首页是小程序的初始页面,是用户打开小程序后首先展示的页面,一个好的首页设计可以提升用户体验、增加用户粘性,帮助小程序吸引更多的用户并提高用户留存率。以下是本文小程序的“首页”页面设计,其功能包括搜索商品、浏览商品、商品竞拍状态展示、商品详细信息展示、商品投标等。搜索商品:用户可以在搜索框中输入关键词,如果商品的名称存在该关键词,则把该商品展示给用户。(2)浏览商品:首页展示商品,用户可以浏览商品的图片、名称、投标最低价等信息,初步了解商品情况。(3)商品竞拍状态:对于每个商品,系统根据商品状态进行分类并在首页中显示,商品一共有三种状态,即“正在竞拍”、“即将竞拍”和“竞拍结束”,用户可以通过点击来查看某个状态的所有商品。(4)商品详细信息:点击商品后可进入商品详情页,用户可以查看商品的图片、详细描述、投标最低价、竞拍时间等。最下方为收藏和投标竞拍,用户可以点击收藏或参与竞拍。同时还要判断该商品是否为用户发布的商品,如果是,则下方显示“不能投标自己发布的商品”。如果该商品用户已经参与投标了,则下方显示“已投标”。如果该商品为即将竞拍的商品,则下方显示为“即将竞拍”,而在竞拍时间处显示距离竞拍开始的剩余时间。如果该商品为竞拍结束的商品,则下方显示“竞拍已经结束”。(5)商品投标:用户可在商品详情页进行投标操作,点击“投标竞拍”参与商品投标,输入出价金额并进行身份验证后,点击“确认投标”进行投标,投标价需要大于或等于投标最低价,在点击提交时会弹出投标提示和定金提交信息,用户点击确认后就显示成功投标,系统会利用Shamir秘密共享对标价进行分割并保存进云数据库中。4.1.2“分类”页面设计“分类”页面可以提供更好的数据展示和浏览方式,提高用户的浏览效率和操作便捷性,并且优化应用程序的加载性能,提供更好的用户体验和满足个性化需求。在“分类”页面下会展示正在竞拍的商品信息,该商品信息包括:商品分类名称、分类商品概要和商品详细信息。(1)商品分类名称:分类页面按商品类型进行划分,如电子产品、食品、书籍等,用户可根据自己的兴趣选择相应的分类进行浏览。(2)分类商品概要:每个分类下展示该类正在竞拍的商品图片、名称及竞拍最低价等,帮助用户快速了解该类商品的大致情况。(3)商品详细信息:点击分类下的商品,可进入商品详情页,商品详情页,查看商品的图片、详细描述、竞拍最低价、竞拍时间等。4.1.3“我要拍卖”页面设计本文电子拍卖小程序中的“我要拍卖”页面为卖家用户提供上传商品功能,卖家用户可以在该页面中通过填写自己想要竞拍的商品信息来上传商品。该页面主要有商品信息输入、商品图片上传和商品上传功能。(1)商品信息输入:用户在此页面输入自己要拍卖的商品信息,包括商品名称、商品描述、投标最低价、商品分类、竞拍开始日期和时间、竞拍结束日期和时间。商品名称、商品描述和联系电话属于字符串型式,投标最低价属于整数型,商品分类、竞拍开始日期和时间和竞拍结束日期和时间时通过调用选择器来让用户进行选择。其中以上商品信息中,如果少填写一项就会返回“请输入完整商品信息”,当所有信息都输入完后对用户输入的数据进行合法性验证,例如验证竞拍开始日期和时间要大于目前的时间,竞拍结束日期和时间要大于竞拍开始日期和时间等。(2)商品图片上传:用户可以上传商品图片,展示商品的外观和细节,提高商品的吸引力和可信度。用户上传的图片最终保存到微信云存储中,之后生成图片的云存储地址,在通过该云存储地址找到商品图片。用户一共可以上传1至9张图片,当用户的图片选择错误时或用户不想要该图片,还可以删除所选的图片。(3)商品上传:当用户输入完所有的商品信息以及上传图片后,用户点击“提交发布”后,商品信息将会保存到云数据库中,此时商品上传操作完成。4.1.4“我的”页面设计本文电子拍卖小程序中的“我的”页面主要为用户提供用户登录和注册、我的竞拍商品管理、正在参与的拍卖、拍卖结果、我的收藏、竞拍规则和用户退出登录等功能。(1)用户登录与注册:用户可以在此页面进行登录操作,未注册用户可点击注册按钮进行用户注册。注册账号需要用户输入相关注册信息(如用户名、手机号、秘密等)进行注册,系统将用户的注册信息以及生成的openid一起保存到云数据库中。openid是微信用户在小程序下的唯一标识,它是由微信官方为每个微信用户在每个应用(包括公众号、小程序等)中生成的一个独特的字符串。这个字符串由数字、大小写英文字母和下划线组成,用于在微信生态中标识和识别用户。之后用户输入手机号和秘密进行登录,在登录时会验证用户输入的手机号和秘密是否与云数据库中用户表里的用户数据对应,当这一步满足时,还要验证用户执行登录操作的openid值是否和用户表中对应数据的openid值相同。以上两步其一主要是判断用户输入的手机号与秘密是否正确,其二是判断用户注册时的微信号与登录时的微信号是否一致。当验证正确后,用户顺利登录,并将用户的个人信息(如头像、用户名、手机号)保存到本地缓存。(2)我的竞拍商品管理:点击“我的拍卖”,用户可查看自己发布的竞拍商品列表,并且可以对自己发布的商品进行删除操作。页面展示了用户自己发布的全部商品,但不包含竞拍结束的商品。(3)正在参与的拍卖:点击“正在参与”,可查看用户当前正在参与的竞拍商品情况以及用户的投标价格,用户可以点击来查看商品剩余时间,方便用户随时查看竞拍进度和状态。(4)拍卖结果:点击“竞拍结果”,用户可查看自己参与的拍卖活动的最终结果,或者自己发布的竞拍商品的最终结果。对于自己参与的拍卖,在页面中会展示商品信息以及自己的竞拍结果,该结果分别为“竞拍成功”和“竞拍失败”,若竞拍成功,可点击来查看卖家信息,若竞拍失败,则显示竞拍失败。对于自己发布的竞拍商品,在页面中同样展示商品信息和拍卖结果,该结果分别为“商品流拍”和“拍卖成功”,若该商品流拍,则显示商品流拍,若拍卖成功,用户可以点击查看竞拍得主以及成交价格。(5)我的收藏:点击“收藏”,用户可以查看自己收藏的商品,方便日后查看和竞拍。(6)竞拍规则:点击“竞拍规则”,用户可查看拍卖小程序的竞拍详细规则和注意事项,帮助用户了解拍卖流程和规定。(7)用户退出登录:用户选择退出登录,在“我的”页面中点击退出登录进行退出,用户退出后将清空本地缓存,退出登录后用户还可以浏览商品,但不能进行投标、收藏和发布。4.2基于秘密共享的电子拍卖方案电子拍卖方案是详细描述了如何在线上实现拍卖活动的具体流程,包括拍卖前的准备、拍卖过程中的规则、竞价的方式、拍卖结束后的结算等各个环节。一个完善的电子拍卖方案需要考虑到各种可能的情况,以确保拍卖活动的公正、公平和有效。图4-2投标流程图图4-2为本文中的电子拍卖小程序的投标流程图,如流程图所示,首先用户进行注册账号和登录账号操作,在登录完账号后,用户的账号信息将被保存在本地缓存。用户可在小程序首页或分类页面进行浏览商品,也可点击商品来浏览商品的详细内容,当用户看中某一个正在竞拍的商品时,可点击“投标竞拍”来进行出价。用户输入标价并且输入手机号和秘密来进行身份验证,当身份验证失败或输入的标价低于投标最低价时,就会提示错误信息,此时本次投标失败。用户需要重新投标并输入正确的投标价和身份验证信息,之后就会提示支付小额的定金,定金为投标价的10%,确认支付定金完后显示投标成功。但用户若拒绝点击确认支付定金,则会显示投标失败。图4-3商品标价处理流程图图4-3为商品标价处理流程图,对于买家的投标价,系统将生成一个素数P,素数P大于投标价,小于投标价的10倍,利用Shamir秘密共享将投标价分割成5份秘密,任意3份秘密可恢复投标价,在整个过程中素数P起到模运算。最后将分割后的5份秘密、素数P、商品id以及投标用户的openid保存到云数据库中的投标记录表中。图4-4竞拍结果处理流程图图4-4为竞拍结果处理流程图,当某商品竞拍结束时,系统会通过云数据库里的投标记录表来判断是否有买家对该商品投标。如果没有,则该商品为流拍商品,竞拍结果返回商品流拍。如果有买家投标,则系统会利用Shamir秘密共享恢复秘密的算法来将投标价进行恢复,并通过比较得出最高的投标价,判断若最高的投标价只有一个,则该投标价的买家为竞拍获胜者,若最高投标价有多位买家,则对比这些买家中谁投标最早,最早投标的买家投标者为竞拍获胜者。以上就是一整个的基于秘密共享的电子拍卖方案。所有买家在竞拍中有且只有一次投标机会,投标过的买家将不能再重复投标,系统在竞拍结束后才恢复出真正的投标价,确保了所有投标过程的公正性和竞拍的公平性。买家投标过程中会经过身份验证和openid值验证,两步验证确定了投标者的身份和出价行为,投标后在云数据库中存储的是投标买家的openid值,在竞拍结束前,除了该买家可在“正在竞拍”页面中查看自己参与的竞拍外,没有人知道该买家参与了竞拍,这确保了投标者匿名性、不可否认性和可验证性。方案还通过使用Shamir秘密共享机制,买家的投标价不以明文形式直接存储,而是被分割为多个部分存储,这保护了买家的隐私,减少了因投标价泄露导致的不公平竞争或恶意攻击,即使部分信息被泄露,也难以恢复出完整的投标价,这大大提高了数据的安全性,确保了标价的保密性。4.3数据库设计在微信小程序云开发中,设计一个良好的云数据库对于整个应用的性能、稳定性、扩展性以及用户体验都有至关重要的作用。一个设计得当的数据库不仅能够有效地存储和管理数据,还能够保证数据的安全性和访问速度,从而直接影响到小程序的响应速度和稳定运行。微信小程序的云数据库提供结构化数据存储,方便数据的增加、删除、修改和查询。同时支持数据备份和恢复功能,保障数据不丢失,提供权限管理确保数据安全。云数据库还提供API和管理工具可以大大简化数据操作,加速开发过程。4.3.1数据库概念结构设计在进行文本小程序的数据库设计时,首要的工作便是进行数据库的概念设计。数据库概念设计的核心任务是将现实中的业务实体和它们之间的关系转化为抽象的数字信息模型。本文需要将竞拍商品、用户、竞拍记录等实体以及它们之间的交互关系转化为数据库中的表结构和关系模型。在进行概念设计时,将采用目前广泛应用的E-R图(实体-关系图)方法。E-R图是一种直观的图形化工具,能够清晰地表示出实体、属性以及它们之间的关联。本文将创建包括用户信息、竞拍商品信息、投标信息、竞拍结果信息和商品分类信息等多种信息实体图的E-R图。图4-5为本文电子拍卖小程序的用户信息实体图。图4-5用户信息实体图竞拍商品信息实体图的属性包括商品id、商品名称、商品描述、分类名称、投标最低价、竞拍开始日期、竞拍开始时间、竞拍结束日期、竞拍结束时间、卖家电话、商品图片、发布时间以及用户收藏数据。具体如图4-6所示。图4-6竞拍商品信息实体图图4-7为商品分类信息实体图。图4-7商品分类信息实体图投标记录信息实体图的属性包括id、投标用户openid、素数P、分割数1、分割数2、分割数3、分割数4、分割数5、投标商品id、卖家手机号以及投标时间。具体如图4-8所示。图4-8竞拍商品信息实体图竞拍结果信息实体图的属性包括id、商品结果参数、商品id、成交价、成交时间、卖家手机号。具体如图4-9所示。图4-9竞拍结果信息实体图根据以上实体信息以及它们之间的联系可得出总体E-R图,具体如图4-10所示。图4-10总体E-R图4.3.2数据库逻辑结构设计数据库逻辑结构设计是将概念结构设计的结果转换为特定的数据模型,并对其进行优化,针对要开发的基于秘密共享的电子拍卖小程序,需要用户表、竞拍商品表、商品分类表、投标记录表、竞拍结果记录表。用户表用来存储用户注册信息,竞拍商品表用来存储用户发布的商品信息,商品分类表存储商品的主要分类名称,投标记录表是用户在参与竞拍时,存储用户的投标信息,而竞拍结果记录表在竞拍结束后用来存储竞拍商品的竞拍结果。以下是本文小程序的数据库逻辑结构设计。表4-1为用户表“User”,用户表主要记录用户个人信息,其信息主要的属性包括:用户id、用户openid、用户头像、用户名称、密码以及手机号。表4-1用户表(User)名称类型是否非空主键备注_idString是是id_openidString是否用户openidavatarUrlString是否用户头像nameString是否名称passWordString是否密码phoneString是否手机号表4-2为竞拍商品表“commodity”,商品表主要记录用户发布的竞拍商品,其主要的属性包括:商品id、商品名称、商品描述、分类名称、投标最低价、竞拍开始日期、竞拍开始时间、竞拍结束日期、竞拍结束时间、商品图片、发布时间以及用户收藏数据。表4-2竞拍商品表(commodity)名称类型是否非空主键备注_idString是是idproduct_nameString是否商品名称commodity_detailsString是否商品描述selectedClassifyobject是否分类名称bidding_minnumber是否投标最低价auctionDataString是否竞拍开始日期auctionTimeString是否竞拍开始时间续表4-2竞拍商品表(commodity)名称类型是否非空主键备注auction_end_DateString是否竞拍结束日期auction_end_TimeString是否竞拍结束时间userPhoneString是否卖家联系电话imgarray是否商品图片timedata是否发布时间collectionarray否否收藏数据表4-3为商品分类表“classify”,分类表是保存用户的商品分类名称的表,其主要的属性包括有:分类id、分类名称以及分类位置参数。表4-3商品分类表(classify)名称类型是否非空主键备注_idString是是idnameString是否分类名称numnumber是否位置数表4-4为投标记录表“bid_record_table”,投标记录表是保存用户对商品进行投标后的数据,其主要的属性包括:id、投标用户openid、秘密共享素数、秘密共享分割数1、秘密共享分割数2、秘密共享分割数3、秘密共享分割数4、秘密共享分割数5、投标商品id、卖家手机号以及投标时间。表4-4投标记录表(bid_record_table)名称类型是否非空主键备注_idString是是idopenidString是是投标买家openidPnumber是否秘密共享素数bid1number是否秘密共享分割数Bid2number是否秘密共享分割数Bid3number是否秘密共享分割数Bid4number是否秘密共享分割数Bid5number是否秘密共享分割数续表4-4投标记录表(bid_record_table)名称类型是否非空主键备注commodity_idString是否投标商品idsellerPhoneString是否卖家手机号timedata是否投标时间表4-5为竞拍结果记录表“transaction_table”,竞拍结果记录表是在商品竞拍结束后,通过计算得出商品的竞拍结果,并将其保存到该表中,其主要的属性包括:id、商品结果参数、商品id、成交标价、成交时间、卖家手机号。商品结果参数auction是记录商品是否有人投标竞拍,auction为1则表示该商品无人竞拍,属于商品流拍,若auction为0,则表示该商品有人参与竞拍。表4-5竞拍结果记录表(transaction_table)名称类型是否非空主键备注_idString是是idauctionnumber是否商品结果参数commodity_idString是否商品idrecoveredSecretnumber否否成交投标价timeString否否成交时间openidString否否中标买家openidsellerPhoneString否否卖家手机号4.4本章小结本章针对基于秘密共享的电子拍卖小程序进行设计,其中包括功能设计、基于秘密共享的电子拍卖方案设计和数据库设计。在功能设计中,设计了满足功能需求的各个页面,并对各个页面的功能进行了详细描述。同时设计了一个满足安全需求的基于秘密共享的电子拍卖方案,并对竞拍流程进行了详细描述。5基于秘密共享的电子拍卖小程序实现5.1开发工具及环境表5-1开发工具及环境硬件配置开发工具系统Windows11家庭中文版开发软件微信开发者工具1.06.2402030处理器Intel酷睿i510210U1.60GHz后端管理腾讯云内容管理系统(CMS)显卡IntelUHDGraphics开发框架微信小程序云开发框架表5-1为本文开发基于秘密共享的电子拍卖小程序的开发工具及环境,微信开发者工具是开发微信小程序的主要工具,提供了代码编辑、预览、调试等功能。腾讯云内容管理系统(CMS)是腾讯云的内容管理系统,可以帮助高效管理小程序的内容,无需自己从零开始搭建后台管理系统,通过CMS快速创建、修改和删除内容。5.2登录和注册功能实现图5-1注册页面与登录页面图5-1为用户注册页面与用户登录页面。在注册页面中,用户点击“点击上传头像”,可以获取到微信头像,用户也可以选择自己的相册或者拍摄图片来作为头像。其上传头像的方法是,在wxml文件中设置了点击触发事件,当用户点击后,触发点击事件来处理头像选择。用户选择头像后,事件对象e中的detail属性包含了头像的本地路径avatarUrl。这个路径是用户选择的图片的本地临时文件路径。之后调用wx.cloud.uploadFile,wx.cloud.uploadFile是微信小程序云开发提供的一个API,用于将小程序端用户上传的文件存储到云开发的存储空间中。通过调用这个API,配置好相关属性后,可以实现文件的上传功能,将图片上传到云存储里,而数据avatarUrl里存储图片在云存储中的路径。用户输入用户名、手机号、密码来进行注册,设置监听函数来获取用户输入的数据,并且通过云函数获取用户的openid值。之后将用户输入的数据、上传的头像以及openid一起保存到云数据库User中,其保存方法为运用db.collection("User").add加上数据内容进行保存,这样就实现了用户注册功能。在用户登录中,先是获取用户的输入数据,然后生成微信用户的openid值,之后比对用户输入的手机号、密码以及获取的用户openid值是否与云数据库中的“phone”、“passWord”和“_openid”相同,若比对成功,则用户登录成功,将用户的信息保存至本地缓存。图5-2为登录时输入的数据和云数据库中“User”表里存储的用户信息进行比对的代码,对比成功后显示登录成功并将用户信息保存本地缓存。图5-2登录数据比对图用户登录成功后,在“我的”页面中就会获取本地缓存来接受用户名和头像,将用户名和头像显示在页面中,下图5-3分别为未登录时的“我的”页面和登录时的“我的”页面。图5-3“我的”页面下未登录和登录图5.3商品上传功能实现商品上传页面可以实现用户上传自己想要竞拍的商品,图5-4为商品上传页面图,用户想上传商品则需要输入商品名称、商品描述、投标最低价、商品分类、竞拍开始日期和时间、竞拍结束日期和时间和商品图片,来上传自己的商品。图5-4商品上传页面图当用户输入信息后,就会监听用户输入的数据并赋值到data中的相应数据。当用户点击提交发布时,就会进行用户输入的安全验证。安全验证包括以下几点:验证用户输入信息的完整性,当监听到某项信息并没有输入时返回提示“请输入完整信息”。商品名称、商品描述、投标最低值、商品分类、竞拍开始日期和时间、竞拍结束日期和时间和商品图片都要有数据输入或选择。验证数据的合理性,输入的商品名称不能大于100个字符,输入的商品描述不能大于2000个字符,输入投标最低值要大于0,选择的竞拍开始日期和时间不能小于当前日期和时间,同时输入的竞拍结束日期和时间不能小于竞拍开始日期和时间。当验证完成后,将用户输入的商品信息保存到云数据库的“commodity”表中,这就完整了商品的发布操作。图5-5为上传商品的示例图,由图中可见,输入了完整的商品信息并上传了图片,因为选择的拍卖时间大于当前时间,所以该商品属于即将拍卖阶段,在首页的即将拍卖那可以看到所上传的商品。图5-5上传商品示例图5.4商品管理功能实现在“我的-我的拍卖”页面可以管理发布的商品,可以将发布的商品进行删除。如图5-6为商品管理页面,实现了将商品名称为“黑色T恤”的商品进行删除。图5-6商品管理删除商品的实现是通过调用云函数实现,将要删除的商品id作为参数传递进去,云函数的代码如图5-7所示,获取到商品id后,在云数据库“commodity”中查看该id,使用remove()来实现删除。图5-7删除商品代码图5.5首页功能实现图5-8获取商品如图5-8为从云数据库获取商品信息的代码。接着代码constnow=newDate()来获取当前时间值并赋值给now,商品数据中由竞拍开始日期“auctionData”、竞拍开始时间“auctionTime”、竞拍结束日期“auction_end_Date”、竞拍结束时间“auction_end_Time”,图5-9为日期时间合并函数,图5-10为商品状态分类代码,通过将合并后的竞拍开始时间与当前时间进行比较,把商品的状态分成即将竞拍、正在竞拍和竞拍结束。图5-9日期时间合并函数图5-10商品状态分类把商品分成三类后,就进行前端的布局和页面渲染,下图5-11为首页商品整体页面。图5-11首页商品整体页面图5.6基于秘密共享的电子拍卖方案实现用户在首页或者分类页面可通过点击商品进入商品详情页面,在商品详情页面中,如果是正在竞拍的商品,则下方会显示“投标竞拍”,点击投标竞拍进入投标页面。图5-12投标页面图图5-12为投标页面图,该商品的投标最低值为10,用户需要投标高于或等于该价格,否则报错。图5-13投标流程图图5-13为投标流程图,买家用户输入投标价,然后输入身份验证信息,当用户输入的信息正确后,就会依次弹出两个提示,点击确认后,买家用户就完成投标,买家用户的投标价将会被Shamir秘密共享分割后保存到云数据库的投标记录表“bid_record_table”中。图5-14为“我的-正在参与”页面图,买家用户投标成功后,可在此处查看自己的投标商品境况。图5-14“我的-正在参与”页面针对以上功能,买家用户进行投标竞拍,当用户输入合理的投标价以及身份验证的手机号和密码后,系统先是进行验证,验证投标价是否高于投标最低价,以及身份验证输入的信息是否与本地缓存相同,同时通过输入信息查询用户表“User”,找到用户表中的openid与本地缓存的openid进行对比是否相同。这两步身份验证前者是验证登录账号是否和输入的验证账号相同,后者是验证登录账号的微信号是否和注册时的微信号相同,两步验证实现了安全需求中的可认证性与不可否认性。验证通过后,系统会调用wx.showModal来弹出两个内容,第一个提示投标者是否了解投标规则与确认参与竞拍,第二个则示意投标者提交投标价百分之十作为定金。用户点击确认后,系统将调用云函数进行Shamir秘密共享分割投标价,云函数先是获取一个大于投标价的素数P,如图5-15为随机获取一个大于用户投标价,小于该投标价10倍的素数代码。之后构成公式一生成5个分割后的秘密,每任意3个可恢复用户的投标价。之后将5个分割的秘密、素数P、投标用户的openid、商品id、卖家手机号以及投标时间一起保存到云数据库中的投标记录表“bid_record_table”中。图5-16为Shamir秘密共享分割的云函数代码,图5-17为保存到云数据库投标记录表“bid_record_table”中的内容。图5-15获取素数代码图5-16Shamir秘密共享分割代码图5-17云数据库投标记录表“bid_record_table”中的内容图当竞拍结束,或者用户在“我的-正在参与”处查看自己参与的竞拍商品时,项目文件会调用Shamir秘密恢复的云函数代码来恢复投标价,将素数P以及分割秘密bid1、bid2、bid3、bid4、bid5一起作为参数传递到云函数中,该恢复算法利用拉格朗日插值公式来恢复投标价。Shamir秘密恢复的云函数代码主要内容如下:exports.main=async(event,context)=>{const{P,bid1,bid2,bid3,bid4,bid5}=event;lett=3;letselectedBids=[];while(selectedBids.length<t){letrandomBid=Math.floor(Math.random()*5)+1;if(!selectedBids.includes(randomBid)){selectedBids.push(randomBid);}}functionmodInverse(a,m){a=((a%m)+m)%m;for(letx=1;x<m;x++){if((a*x)%m==1){returnx;}}}functionrecoverSecret(selectedBids){letX=selectedBids.map((b)=>parseInt(b,10));letY=selectedBids.map((b)=>{switch(b){case1:returnbid1;case2:returnbid2;case3:returnbid3;case4:returnbid4;case5:returnbid5;}});letsecret=0;for(leti=0;i<t;i++){letnumerator=1;letdenominator=1;for(letj=0;j<t;j++){if(j!==i){numerator*=-X[j];denominator*=X[i]-X[j];}}secret+=(Y[i]*numerator*modInverse(denominator,P))%P;}return(secret+P)%P;}try{letrecoveredSecret=recoverSecret(selectedBids,[bid1,bid2,bid3,bid4,bid5],P);return{recoveredSecret};}catch(error){console.error(error);return{error:error.message};}}5.7其他功能实现分类浏览功能,首先获取数据库中的“classify”里的数据,将其布局到左边,设置一个点击事件,当点击到对应的分类名称时,赋值给变量select_classify,之后在竞拍商品表“commodity”中查询与变量select_classify一样的商品分类,将查询到的商品数组赋值给另一变量goods,之后在通过时间比较找出正在竞拍的商品。之后将这些商品布局到前端页面中,用户点击商品时就会跳转到商品详情页面,如图5-18所示。图5-18分类页面搜索功能,图5-19为搜索功能代码图,其实现主要是遍历竞拍商品表,通过RegExp函数进行字符查找,当查找到商品名称与输入框输入的字符有相同时,返回商品数据,最后在前端页面展示。图5-20为搜索页面图,在搜索框里输入“鞋”子,找到了商品名称为“耐克鞋空中1号”的商品。图5-19搜索功能代码图5-20搜索页面图后台管理功能,因为该小程序使用的是云开发,后端管理可以使用腾讯云的管理系统,这里使用的是腾讯云内容管理系统(CMS)。如图5-21为该小程序的后台管理,腾讯云内容管理系统(CMS)是腾讯云提供的一种服务,它能帮助用户更加高效地管理网站或应用中的内容,为开发者提供了一个友好的图形用户界面(GUI),让内容管理变得直观易用。通过CMS,可以轻松创建、编辑、发布和删除内容,极大的方便开发人员。腾讯云CMS具备易用性、灵活性、高效性、安全性、稳定性和可扩展等特点,无论是小型网站还是大型门户、电商平台,都能够通过腾讯云CMS高效地管理其内容。图5-21后台管理5.8本章小结本章主要介绍了本文小程序的登录和注册功能实现、商品上传功能实现、商品管理功能实现、首页功能实现和基于秘密共享的电子拍卖方案实现等重要功能的实现,对这些功能的一些重要代码进行了讲解和分析。6系统测试系统测试是检查软件产品或系统是否符合原始设计和开发要求,通过测试确认产品的正确性、完整性、安全性和质量的过程,旨在识别潜在的逻辑错误、运行时问题和数据安全漏洞。接下来将对本文小程序进行测试,先对各个页面的功能编写测试用例来进行测试,然后对竞拍过程进行测试,最后得到测试结果。6.1页面功能测试过程针对本文小程序各个页面的功能测试用例表如下:(1)表6-1为在“我的”页面进行测试的测试用例和测试效果。表6-1“我的”页面测试用例表序号用例名称用例操作预期结果测试结果1用户注册填写注册信息,上传头像如果信息合法,并且用户未注册过,则显示注册成功;如用户信息填写不合法或用户已注册过,则未成功注册并提示信息有误。与预期结果相同2用户登录填写登录信息进行登录如果填写的信息正确,则显示登录成功;如果填写的信息错误,则登录失败并提示错误信息。与预期结果相同3用户退出登录点击退出登录进行退出用户点击退出登录后,用户在页面中的个人信息包含头像和用户名称将被清除。与预期结果相同续表6-1“我的”页面测试用例表序号用例名称用例操作预期结果测试结果4商品删除在“我的拍卖”中的商品右侧点击删除用户点击删除后,删除自己上传的商品,并显示删除成功。与预期结果相同5信息查看点击要查看的信息(包括正在竞拍、竞拍结果、收藏、竞拍规则)进行查看点击要查看的信息后,跳转至相应页面。与预期结果相同(2)表6-2为在“我要拍卖”页面进行测试的测试用例和测试效果。表6-2“我要拍卖”页面测试用例表序号用例名称用例操作预期结果测试结果1商品发布输入商品信息,点击“提交发布”如果输入的商品信息都正确,则显示商品发布成功;如果输入的信息没有通过安全验证,则提示错误信息。与预期结果相同(3)表6-3为在“分类”页面进行测试的测试用例和测试效果。表6-3“分类”页面测试用例表序号用例名称用例操作预期结果测试结果1分类展示点击分类名称点击相应分类名称后,展示该分类名称下的商品信息。与预期结果相同2商品信息展示点击分类页面中的商品点击分类页面中的商品后,跳转到商品详情页面与预期结果相同(4)表6-4为在“首页”页面进行测试的测试用例和测试效果。表6-4“首页”页面测试用例表序号用例名称用例操作预期结果测试结果1商品详情查看点击商品点击商品后跳转到商品详情页面。与预期结果相同2搜索商品在搜索框中输入要搜索的商品关键词如果有搜索到商品则显示商品给用户;如果没有搜索到商品则显示暂无搜索结果。与预期结果相同6.2竞拍过程模拟测试在竞拍过程模拟测试中,事先准备了三位用户账号用于测试,其中一位用户发布商品,其余两位用户进行投标竞拍,最后测试竞拍结果是否符合竞拍规则。图6-1为发布商品的用户与发布的商品图,有图可见该用户的用户名称为“609号”,“609号”卖家用户发布了一个商品名称位“折叠椅子”的商品,投标最低价为10。图6-1“609号”用户与发布的商品图接着另一位用户名称为“海大2”的用户参与该商品竞拍并投标30,图6-2为“海大2”用户与该用户对商品为“折叠椅子”的投标图,图6-2“海大2”用户与投标图用户名称为“哈哈哈”的用户也对商品名称为“折叠椅子”的商品进行了投标竞拍,投标价为25。图6-3为“哈哈哈”用户与投标图。图6-3“哈哈哈”用户与投标图当商品“折叠椅子”竞拍结束后,由竞拍规则可知两位用户在本次竞拍中的预期结果为:“海大2”用户竞拍成功,而“哈哈哈”用户竞拍失败。图6-4为“海大2”用户的竞拍结果图,图6-5为“哈哈哈”用户的竞拍结果图,由图可知“海大2”用户竞拍成功,而“哈哈哈”用户竞拍失败,竞拍结果与预期结果一致。图6-4“海大2”用户的竞拍结果图图6-5“哈哈哈”用户的竞拍结果图而“609号”用户作为卖家用户,在竞拍结果的“我发布的竞拍”处可看到该用户自己发布的商品竞拍结果,“折叠椅子”商品惊怕得主已经产生,点击“查看竞拍得主以及成交价”可查看中标买家信息。具体如图6-6所示。图6-6“609号”用户竞拍结果图6.3测试结果在页面功能测试方面,“我的”页面在各项功能均按预期工作,无逻辑错误或运行时问题。“我要拍卖”页面商品发布功能正常,用户能够成功发布商品,并在信息不合法时收到错误提示。“分类”页面在分类展示和商品信息展示功能上一切正常,用户能够顺利浏览不同分类下的商品详情。首页”页面在商品详情查看和搜索商品功能均符合预期结果,用户能够查看商品详情并且可以成功搜索到相关商品。在竞拍过程模拟测试方面,竞拍过程按照设定的竞拍规则进行,用户能够正常参与竞拍并投标。竞拍结束后,系统正确判断竞拍结果,并展示给相应用户,与预期结果一致。经过全面的测试,基于秘密共享的电子拍卖小程序已满足预定的功能需求。小程序运行稳定,用户体验良好,能够为用户提供安

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论