- 博客(18)
- 收藏
- 关注
原创 山东大学项目实训——简易微信小游戏(五)
本篇对cocos creator五子棋项目进行补充,例如输赢判定、悔棋的实现。由于在上一篇将该项目的核心:人机对战的“评分表法”进行了分析与实现山东大学项目实训——简易微信小游戏(四),因此这里相对容易些。一、输赢判定及实现五子棋只要有一方“五子连珠”则证明该方获胜,那么计算机如何知道棋盘上出现“五子连珠”呢?显然机器只能知道玩家鼠标点击的位置坐标或者是机器通过“评分表法”得到的最大分数位置坐标,因此最简单粗暴的方式就是遍历该位置的同一方向(水平、垂直、正斜、反斜)上是否有紧挨连续的棋子且多于.
2022-04-04 10:25:21 3681
原创 山东大学项目实训——简易微信小游戏(四)
本篇我在这里理清五子棋人机对战的思路。由于本人没有深究五子棋的玩法,因此对于“禁手”等专业词语还不是很清楚,只知道“五子连珠”获得游戏胜利和黑棋(玩家)先手这样的简单规则。以此基础参考“评分表法”(或者称“五元组法”)实现五子棋的人机对战。一、评分表法首先,人机对战最重要的是解决机器怎么下棋的问题。下棋不是随便下在任意位置上就可以,而是下在最合适的位置上,就像我们人类思考最佳的下棋位置一样。那么如何选择这个位置是关键,例如当玩家下了连续一条线上的3个黑棋,而机器下的白棋没有3个连在一起,这个时候
2022-04-01 11:23:07 3788
原创 山东大学项目实训——简易微信小游戏(三)
本章简单介绍如何将在cocos creator上制作好的游戏发布到微信小程序上,下一章将正式进入五子棋小游戏项目的开发。
2022-03-29 19:57:16 3183
原创 山东大学项目实训——简易微信小游戏(二)
本篇开始进行“套奶牛”小游戏开发的初步探索,目的是初步掌握如何使用cocos creator开发微信小游戏,为后面编程“五子棋”小游戏做铺垫。一、准备工作 为了完成微信小游戏的项目开发,在新建项目后需要进行一些设置cocos creator相关内容的准备工作。首先将该项目的宽高初始值互换,改为如图所示的数值,以便于竖屏手机开发。同时将场景画布中的宽高属性同样改为宽:640,高:960 接着在资源管理器中的assets文件夹下分别新建三个文件夹:res...
2022-03-13 11:15:00 285
原创 山东大学项目实训——简易微信小游戏(一)
一、项目背景 微信小程序接触真实用户快,对用户反馈快速体现,是一个非常好的实践平台。同时就行业背景来看,人们对于无需安装打开即玩的休闲类小游戏的需求依然存在。二、工作内容 开发绳套奶牛、大鱼吃小鱼、五子棋等几个经典小游戏合集的微信小程序。设计脚本系统和几个游戏角色间的动作交互和响应。难点重点就在于脚本系统和动画系统。三、实施方案3.1 任务分工:徐敬杨:组长,负责人、UI设计王小龙:脚本编程韦宇:组织调试韦潇:CocosCreat...
2022-03-05 16:33:10 4046
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第十二周)
2021SC@SDUSC由于这学期还有其他课程,学习任务紧张,未来得及深入学习cuda编程,但是在“信息安全导论”课上学习了openssl的相关知识。这里就用openssl实现SM2算法,这里粘贴部分源代码以及运行结果。SM2原理简要分析已经在之前篇章中进行分析。运行结果部分展示:总结:本学期对各种密码算法以及cuda编程有了初步的了解,虽说没有完美完成自己的分工部分,但也学到了很多有用的知识。自己争取在寒假继续研究cuda编程,为之后的学习工作做好铺垫。期待大家的持续...
2021-12-26 22:25:04 2690
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第十一周)
2021SC@SDUSC在之前已经对SHA算法进行了理论分析,本周主要对SHA进行GPU和CPU上的对比,并对其算法进行线索分析。一、SHA在CPU/GPU中的性能对比上图为库中默认参数的算法性能测试结果,将其复制粘贴到记事本进行呈现。其中,最后一行代表GPU计算4096个16k字节消息的hmac值,做100次平均每次用时0.045699s。这个计算速度比特率大约每秒11Gbps(1400MByteps),比CPU(i5-3470)快一倍。下图为CPU的性能测试结果。二、SH..
2021-12-19 23:33:51 2091
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第十周)
2021SC@SDUSC在之前的篇章中我们对SM2国密算法中的ECC算法进行了原理分析,现在对SM2算法中的公钥加密算法进行更为深刻的分析。一、SM2公钥加密算法根据之前讲过的ECC算法,知道私钥dB和基点G很容易求出公钥PB,但是只知道公钥和基点求私钥是非常困难的。接下来,看加密过程。其中,k为随机数发生器产生的随机数,明文为M,密文C由C1\C2\C3三个部分拼接而成。C3部分即将x2\M\y2拼接后用哈希函数得到的一个比特串。C2部分由明文M和t异或得到,具体之后分析...
2021-12-12 21:39:39 1312
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第九周)
2021SC@SDUSC在之前已经对AES算法进行了理论分析,本周主要对AES进行GPU和CPU上的对比,并对其算法进行线索分析。一、RSA在CPU/GPU中的性能对比对比下图,可见这个实现在GTX980上的RSA速度是CPU(i5-3470)的一半。二、RSA线索分析如图所示是对RSA算法的粗略线索分析,其中rsa ctx三个类型以及ctx mp核心函数等均是较为有用的线索分析,可以自主学习理解。...
2021-12-05 22:31:59 326
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第八周)
2021SC@SDUSC在之前已经对AES算法进行了理论分析,本周主要对AES进行GPU和CPU上的对比,并对其算法进行线索分析。一、AES在CPU/GPU中的性能对比上图为库中默认参数的算法性能测试结果,将其复制粘贴到记事本进行呈现。其中,最后一行代表GPU计算4096个16k字节消息的hmac值,做100次平均每次用时0.092503s。这个计算速度比特率大约每秒700M字节,比CPU(i5-3470)快五倍。下图为CPU的性能测试结果。二、AES线索分析由于在之前...
2021-11-28 21:48:13 1564
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第七周)
2021SC@SDUSC本周对于国密SM2算法原理进行简要的介绍,方便后续对其在CUDA上进行设计。一、SM2加解密过程SM2 国密非对称加密算法,属于椭圆曲线密码体制(ECC)Author:John基于椭圆曲线的离散对数难题,目前 SM2 256 bit 加密算法是相当安全的,相当于 RSA 2048 bit 及以上的安全性有公钥、私钥之分,公钥给别人,可以在一定范围内公开,私钥留给自己,必须保密。由私钥可以计算公钥;由公钥计算私钥,是相当困难的,现阶段是不可能加密过程: ..
2021-11-21 22:45:17 4924
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第六周)
2021SC@SDUSC本周将三大算法中最后一个未介绍的算法SHA的原理进行分析。本章就对最初的SHA-1算法原理进行简要分析。一、SHA-1背景SHA-1算法也称安全散列算法1,可以将一个最大2^(64)-1的数据生成一个160位的数据摘要。尽管SHA-1算法已经被认为不再安全,但仍有部分应用使用SHA-1算法验证文件。二、类型定义在介绍算法原理之前,有必要定义一些数据类型,有助于我们脱离具体编程语言分析这个算法。这里使用C++的定义方式。typedef __UINT8.
2021-11-14 23:11:57 2983
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第五周)
2021SC@SDUSC很抱歉由于自身身体原因,本来打算这周对AES算法进行CPU和GPU的实际检测比较分析进行推迟。我决定对于SHA、AES、RSA三个算法在CPU和GPU性能对比放在最后几周。本周介绍RSA算法的基本原理。一、RSA加密算法简介:RSA加密算法是一种非对称加密算法。所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用公钥进行加密、私钥进行解密。在RAS算法中,公钥是公开信息,而私钥是需要保密的。加密算法和解密算法也都是公开的。虽然私钥是由公钥决定的,由于无法计
2021-11-07 23:04:17 2592
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第四周)
2021SC@SDUSC上一章大致分析了AES在高级程序语言中的实现,这里再给出c++实现AES的完整源代码,帮助理解。#include <iostream>#include <cstdlib>#include <stdio.h>using namespace std;typedef unsigned char byte;struct word{ byte wordKey[4];};class AES{public: AES(){
2021-10-31 23:40:13 352
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第三周)
2021SC@SDUSC本章承接上一周的文章,对AES算法实现进行简单的实现,这里未涉及CUDA/GPU技术。只是先对AES算法进行一般程序语言的实现做一个简单的了解。一、声明AES类采用面向对象编程,声明AES类对象,将加密过程中各种功能函数进行声明,使代码结构清晰,便于管理。class Aes { public: Aes(); ~Aes(); Aes(int keysize,unsigned char* keyBytes); //构造函数
2021-10-24 22:15:22 2421
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第二周)
2021SC@SDUSC这周主要是对AES算法进行理论上的了解与分析。一、AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法。对称加密算法也就是加密和解密使用相同的密钥。首先介绍密码学的一些术语概念:明文:没有经过加密的数据。密钥:用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络
2021-10-17 22:20:03 361
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第一周)
2021SC@SDUSC一、CUDA配置(win10操作系统下)以上是对于本项目的软硬件配置,首先下载VS2017社区版,接着对应配置CUDA10.0版本.此外还可能用到cudnn辅助cuda完成深度学习。我在安装的时候花了大量时间,最后在多次删了又下,下了又删后才成功。下面分享的是在WIN10操作系统下注意的点。1.需要先安装VS,可参考其他资料默认下载即可。接着再安装CUDA,也是按照默认下载精简版即可,环境变量等配置可参考其他资料,最后下载cudnn对cuda部分文..
2021-10-10 18:38:06 299
原创 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(综述)
一、项目简介某公司主要产品之一是基于硬件芯片的加密卡/加密机。考虑到虽然当前政策倾向于批准基于硬件的加密设备,但是下一步可能会放开其他类型的实现形式,比如使用GPU加速运算的加密设备和服务,因此要预研使用CUDA/GPU加速的密码运算技术。二、项目目标工作计划是在GMSSL(一个开源的密码算法和SSL库以支持国产密码SM系列算法为特色)中,使用GPU实现RSA、SM2等公钥算法。RSA的GPU实现可以参考libgpucrypto(一个使用CUDA的RSA开源实现项目)。具体工作需要改进lib
2021-09-29 20:08:32 535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人