当前位置: 首页 > news >正文

海兴网站建设价格网站建设参考论文

海兴网站建设价格,网站建设参考论文,网站怎么吸引人,崇信县门户网1、SHA256 介绍 SHA256 加速器是用来计算 SHA-256 的计算单元#xff0c; SHA256 是 SHA-2 下细分出的一种算法。 SHA-2 名称来自于安全散列算法 2 #xff08;英语#xff1a; Secure Hash Algorithm 2 #xff09;的缩写#xff0c;一种密码散列函 数算法标准…1、SHA256 介绍 SHA256 加速器是用来计算 SHA-256 的计算单元 SHA256 是 SHA-2 下细分出的一种算法。 SHA-2 名称来自于安全散列算法 2 英语 Secure Hash Algorithm 2 的缩写一种密码散列函 数算法标准由美国国家安全局研发由美国国家标准与技术研究院 NIST 在 2001 年发布。 属于 SHA 算法之一是 SHA-1 的后继者。其下又可再分为六个不同的算法标准包括了 SHA-224 、 SHA-256 、 SHA-384 、 SHA-512 、 SHA-512/224 、 SHA-512/256 。这些变体除了生成摘要的长度、循环运行的次数等一些细微差异之外基本结构是一致的。 简单来说对于任何长度的消息 SHA256 都会产生一个 256bit 长的哈希值。 Kendryte K210 内置 SHA256 安全散列算法加速器功能包括 1. 支持 SHA-256 的计算 2. 支持输入数据的 DMA 传输 Kendryte K210 官方 SDK 提供了 3 个操作 PWM 的函数这些函数介绍如下 sha256_init 函数 该函数主要用于初始化 SHA256 加速器外设该函数原型及参数描述如下所示 void sha256_init(sha256_context_t *context, size_t input_len); typedef struct _sha256_context {size_t total_len;size_t buffer_len;union{uint32_t words[16];uint8_t bytes[64];} buffer; } sha256_context_t; sha256_update 函数 该函数用于传入一个数据块参与 SHA256 Hash 计算如下代码所示 void sha256_update(sha256_context_t *context, const void *input, size_t input_len); 该函数有三个参数第一个参数为输入 SHA256 上下文对象第二个参数为待加入计算的 SHA256 计算的数据块第三个参数为对应数据块的长度。 sha256_final 函数 该函数用于结束对数据的 SHA256 Hash 计算如下代码所示 void sha256_final(sha256_context_t *context, uint8_t *output); 函数共有两个参数第一个参数为输入 SHA256 上下文对象第二个参数为存放 SHA256 计算的结果的 buffer 需保证传入这个 buffer 的大小为 32Bytes 以上。 sha256_hard_calculate 函数 该函数用于一次性对连续的数据计算它的 SHA256 Hash 如下代码所示 void sha256_hard_calculate(const uint8_t *input, size_t input_len, uint8_t *output); 该函数有三个参数第一、第二参数用于输入待 SHA256 计算的数据和数据的长度第三 个参数为存放 SHA256 计算的结果的 buffer 需保证传入这个 buffer 的大小为 32Bytes 以上。 2、源码案例 main.c 如下所示 uint8_t hash[SHA256_HASH_LEN]; uint8_t compare1[] {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad}; uint8_t compare2[] {0x58, 0xbe, 0xb6, 0xbb, 0x9b, 0x80, 0xb2, 0x12, 0xc3, 0xdb, 0xc1, 0xc1, 0x02, 0x0c, 0x69, 0x6f,0xbf, 0xa3, 0xaa, 0xd8, 0xe8, 0xa4, 0xef, 0x4d, 0x38, 0x5e, 0x9b, 0x07, 0x32, 0xfc, 0x5d, 0x98}; uint8_t compare3[] {0x6e, 0x65, 0xda, 0xd1, 0x7a, 0xa2, 0x3e, 0x72, 0x79, 0x8d, 0x50, 0x33, 0xa1, 0xae, 0xe5, 0x9e,0xe3, 0x35, 0x2d, 0x3c, 0x49, 0x6c, 0x18, 0xfb, 0x71, 0xe3, 0xa5, 0x37, 0x22, 0x11, 0xfc, 0x6c}; uint8_t compare4[] {0xcd, 0xc7, 0x6e, 0x5c, 0x99, 0x14, 0xfb, 0x92, 0x81, 0xa1, 0xc7, 0xe2, 0x84, 0xd7, 0x3e, 0x67,0xf1, 0x80, 0x9a, 0x48, 0xa4, 0x97, 0x20, 0x0e, 0x04, 0x6d, 0x39, 0xcc, 0xc7, 0x11, 0x2c, 0xd0}; uint8_t data_buf[1000*1000]; int main(void) {uint64_t cycle;uint8_t total_check_tag 0;uint32_t i;printf(\n);cycle read_cycle();sha256_hard_calculate((uint8_t *)abc, 3, hash);for (i 0; i SHA256_HASH_LEN;){if (hash[i] ! compare1[i])total_check_tag 1;printf(%02x, hash[i]);if (!(i % 4))printf( );}printf(\n);sha256_hard_calculate((uint8_t *)abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij, 60, hash);for (i 0; i SHA256_HASH_LEN;){if (hash[i] ! compare2[i])total_check_tag 1;printf(%02x, hash[i]);if (!(i % 4))printf( );}printf(\n);sha256_hard_calculate((uint8_t *)abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgha, 65, hash);for (i 0; i SHA256_HASH_LEN;){if (hash[i] ! compare3[i])total_check_tag 1;printf(%02x, hash[i]);if (!(i % 4))printf( );}printf(\n);memset(data_buf, a, sizeof(data_buf));sha256_hard_calculate(data_buf, sizeof(data_buf), hash);for (i 0; i SHA256_HASH_LEN;){if (hash[i] ! compare4[i])total_check_tag 1;printf(%02x, hash[i]);if (!(i % 4))printf( );}printf(\n);sha256_context_t context;sha256_init(context, sizeof(data_buf));sha256_update(context, data_buf, 1111);sha256_update(context, data_buf 1111, sizeof(data_buf) - 1111);sha256_final(context, hash);for (i 0; i SHA256_HASH_LEN;){if (hash[i] ! compare4[i])total_check_tag 1;printf(%02x, hash[i]);if (!(i % 4))printf( );}printf(\n);cycle read_cycle() - cycle;if (total_check_tag 1)printf(\nSHA256_TEST _TEST_FAIL_\n);elseprintf(\nSHA256_TEST _TEST_PASS_\n);printf(\nsha256 test time %ld ms\n, cycle/(sysctl_clock_get_freq(SYSCTL_CLOCK_CPU)/1000));while(1);return 0; }         可以看到mian 函数首先计算‘ abc ’的哈希值并将计算的值通过串口打印输出接着 计算字符串“ abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij ”的哈希值然后同样 将计算的值打印出来然后计算字符串“ abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabc defghabcdefgha ”的哈希值并打印输出接着计算多个字符‘ a ’和分块计算多个字符‘ a ’的哈 希值然后通过串口打印输出。         至此该函数总共输出 5 个不同的消息经过 SHA256 算法计算后得到的、各为 32 字节长度 的哈希值。
http://www.w-s-a.com/news/748419/

相关文章:

  • 个人网站备案名字网站设计的提案
  • 网站自己做还是找人做常州钟楼区邹区建设局网站
  • 网站文件上传wordpress修改asp做微网站
  • 妇女之家网站建设方案英语不行如何编程做网站
  • 深圳企业网站建设推广服务网站托管一年多少钱
  • wordpress 百度地图api网络seo天津
  • 网站营销咨询顾问餐饮加盟网站建设方案
  • 网站后台管理系统的重要技术指标wordpress下单邮件通知的实现
  • 通化县住房和城乡建设局网站定制网站收费
  • 湖北做网站教程哪家好成都网站建设询q479185700上快
  • 网站的seo方案鹰潭做网站的公司
  • 高级室内设计网站太原网站设计费用
  • 智信建设职业培训学校网站深圳做网站建设开发
  • 宣城市住房和城乡建设局网站网站界面设计专利
  • 免费个人网站建站申请如何做内网网站
  • 福州专业网站建设怎么做黄骅港怎么读
  • 望京 网站建设深圳发型网站建设
  • 电商网站的相同点医疗网站建设代理商
  • 网址导航网站有哪些易营宝智能建站
  • 私人定制哪个网站做的比较好免费网站使用
  • 嘉兴网站建设系统免费的seo优化
  • 购书网站开发的意义网站建设接单渠道
  • 网站站内搜索怎么做wordpress默认主题修改
  • 网站推广的表现方式交网站建设 域名计入什么科目
  • 龙岗南联网站建设公司江门市
  • 网站运行方案设计平台模式
  • 网站加入wordpress邳州城乡建设局网站
  • 两个网站如何使用一个虚拟主机东莞市网站seo内容优化
  • 湖南网站建设公司排名傲派电子商务网站建设总结
  • 网站建设求职要求互联网挣钱项目平台