今日份学习报告

1 早上一如既往的八点起床,买了一杯粥加个包子,在路上直接吃完了。今天离得比较近,到班的时候没有迟到,但是依旧是最后一个到班,芜湖!

2 到班后是视听说,视听说老师坐到后面看着,但也不来转悠,但还是有点慌,可能是从小养成的担惊受怕的习惯哎,到那之后先抄了一会答案,接着学习了JavaScript语法,直接跳过了基础语法,那些跟其他语言基本无差,今天学习了一些WebAPI,获取元素和输出元素(alert是输出,prompt是输入,还有一些可以把元素变成对象的API,是document类型的,DomAPI。

document.getElementById()、document.getElementsByTagName()、console.log()输出到控制台,和h5新增的方法:document.querySelector(里面加对象),取出来第一个,不能全取出来。

document.querySelectorAll(里面加对象),这个可以全取出来。等等吧,学到了事件那里。

3 下课后大概十点半不到,我去食堂把午饭吃了!!不知道怎么想的,吃饭的时候把吞噬星空看了,真不错这动漫,牛。吃完饭,去西门拿了一下自提点的东西。

4 拿完回到寝室,跟女朋友打电话啦!忘记是什么时候开始学Java的,应该是打电话之前就把Java课的Map课看完了,到现在已经完全把前面的API看完了,到了那个做案例的地方,应该是这时候打的电话。边打电话边做案例。

5 又是做完案例非常开心的一天,上一个案例是自己改了一下,写了一个日常计划的后台运行程序,这次写了一个斗地主的发牌到玩家看牌的后台运行程序,视频里面是在一个类里面完全写完,但是看了评论,引发了我的思考,这完全体现不出来Java的封装还有Java是面向对象编程的,所以我把他进行了改进,称之为“面向对象之高级斗地主”,非常nice!

6   写完那个程序大概是四点,出去打球打到六点半左右,打完球吃了个饭(已经饿的不行了!),吃完饭买了一堆水,没错我就是水货!,买完水回到寝室,累个半死,每次打完球都贼累,洗了个澡,爽一批!,洗完澡又开始跟我的可爱的女朋友打电话啦!,现在大概是八点半,我在写这个今日份学习报告!,现在想起来我今天还没学MySQL,室友回来找我振🔪,振!!一会打完再学吧哈哈哈(不知道还能不能学了,一打游戏就入迷)

7   今天的游戏过程非常不顺利,前几把游戏捡到了非常好的东西,肯定是天选之人的局,但是游戏掉线了,很气啊,后面几把遇到了很牛的人,总之今天游戏不畅。

8   十点十七分不打游戏了,学习我的MySQL了。哦no,开始教妹妹题了,学习MySQL要晚一点了。十点五十教完妹妹了。开始准备学MySQL。跟我妈聊了一会,五十六了开始学习。

9   跟女朋友边打电话边写代码,把DQL写完了,也复习了前面的,做完了案例,感觉掌握的还行,就是不知道女朋友心情如何??我的错哎!!

10   现在是凌晨12分,半点睡觉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一数字签名实验报告,基于CryptoAPI实现: 实验目的: 学习并掌握使用CryptoAPI实现数字签名的基本步骤。 实验环境: Windows操作系统,Visual Studio开发环境。 实验步骤: 1. 初始化CryptoAPI 使用CryptAcquireContext函数初始化CryptoAPI。在本次实验中,我们使用默认的加密服务提供程序和一个空的容器名称。代码如下: ```C++ HCRYPTPROV hProv; if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) { printf("CryptAcquireContext failed, error %d\n", GetLastError()); return; } ``` 2. 创建密钥对 使用CryptGenKey函数生成一个密钥对,其中一个密钥用于签名,另一个密钥用于验证签名。在本次实验中,我们使用RSA算法和默认的密钥长度1024位。代码如下: ```C++ HCRYPTKEY hKey; if (!CryptGenKey(hProv, CALG_RSA_SIGN, 1024 << 16 | CRYPT_EXPORTABLE, &hKey)) { printf("CryptGenKey failed, error %d\n", GetLastError()); CryptReleaseContext(hProv, 0); return; } ``` 3. 创建哈希对象 使用CryptCreateHash函数创建一个哈希对象,用于计算数据的哈希值。在本次实验中,我们使用SHA-256算法。代码如下: ```C++ HCRYPTHASH hHash; if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)) { printf("CryptCreateHash failed, error %d\n", GetLastError()); CryptDestroyKey(hKey); CryptReleaseContext(hProv, 0); return; } ``` 4. 计算哈希值 使用CryptHashData函数计算数据的哈希值。在本次实验中,我们使用一个字符串作为数据。代码如下: ```C++ const BYTE* pbData = (BYTE*)"Hello, world!"; DWORD dwDataLen = strlen((const char*)pbData); if (!CryptHashData(hHash, pbData, dwDataLen, 0)) { printf("CryptHashData failed, error %d\n", GetLastError()); CryptDestroyHash(hHash); CryptDestroyKey(hKey); CryptReleaseContext(hProv, 0); return; } ``` 5. 签名哈希值 使用CryptSignHash函数对哈希值进行签名。在本次实验中,我们使用PKCS #1 v1.5格式的签名。代码如下: ```C++ BYTE* pbSignature = NULL; DWORD dwSignatureLen = 0; if (!CryptSignHash(hHash, AT_SIGNATURE, NULL, 0, NULL, &dwSignatureLen)) { printf("CryptSignHash failed, error %d\n", GetLastError()); CryptDestroyHash(hHash); CryptDestroyKey(hKey); CryptReleaseContext(hProv, 0); return; } pbSignature = (BYTE*)malloc(dwSignatureLen); if (!CryptSignHash(hHash, AT_SIGNATURE, NULL, 0, pbSignature, &dwSignatureLen)) { printf("CryptSignHash failed, error %d\n", GetLastError()); free(pbSignature); CryptDestroyHash(hHash); CryptDestroyKey(hKey); CryptReleaseContext(hProv, 0); return; } ``` 6. 验证签名 使用CryptVerifySignature函数验证签名。在本次实验中,我们使用先前生成的哈希值和签名进行验证。代码如下: ```C++ if (!CryptVerifySignature(hHash, pbSignature, dwSignatureLen, hKey, NULL, 0)) { printf("CryptVerifySignature failed, error %d\n", GetLastError()); } else { printf("Signature verified successfully!\n"); } ``` 7. 释放资源 使用CryptReleaseContext函数释放CryptoAPI使用的资源。代码如下: ```C++ CryptDestroyHash(hHash); CryptDestroyKey(hKey); CryptReleaseContext(hProv, 0); ``` 实验结果: 运行实验代码,输出结果为“Signature verified successfully!”,说明签名验证成功。 实验总结: 本次实验学习并掌握了使用CryptoAPI实现数字签名的基本步骤。CryptoAPI提供了丰富的加密功能,可以在Windows平台上轻松实现各种加密算法和技术,适合于开发Windows应用程序和服务。在实际应用中,需要注意保护密钥和签名的安全性,防止私钥泄露和签名被篡改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值