SM3密码杂凑算法基础学习 术语与定义 1 比特串bit string 由0和1组成的二进制数字序列. 2 大端big-endian 数据在内存中的一种表示格式,规定左边为高有效位,右边为低有效位.数的高阶字节放在存储器的低地址,数的低阶字节放在存储器的高地址. 3 消息message 任意有限长度的比特串.本文本中消息作为杂凑算法的输入数据. 4 杂凑值hash value 杂凑算法作用于消息后输出的特定长度的比特串.本文本中的杂凑值长度为256比特. 5 字word 长度为32的比特串 符号…
SM3杂凑算法实现--第三部分 一.SM3 密码概述        我们首先把需要用到的算法呈现出来,最后我们再考虑如何集合为一个库的方法,这一部分我们就开始编写一个新的算法:国家商用密码标准SM3密码算法.        首先要明白SM3是一个什么样的东西:单向加密算法.也可以称之为密码哈希算法.杂凑算法.摘要算法,都可以指这类算法.顾名思义,这类算法只能加密不能解密,所以不是为了直接保护数据的秘密性而存在的,不是让使用者解密这串密文得到原文而使用的.这类算法一般用于保护数据明文的完整性,抗篡…
不知道大家有没有看过 Laravel 的源码.在 Laravel 源码中,对于用户密码的加密,使用的是 password_hash() 这个函数.这个函数是属于 PHP 密码散列算法扩展中所包含的函数,它是集成在 PHP 源码中的扩展,并且还是 PHP 官方所推荐的一种密码加密方式.那么它有什么好处呢? 实际上,password_hash() 这一系列的函数是对 crypt() 这个加密函数的一种封装.crypt() 函数也是一种单向散列函数,默认情况下是基于 UNIX DES 算法,这个函数的…
Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼   什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使得函数值最小的参数向量.它的应用领域非常广泛,如:经济学.管理优化.网络分析.最优设计.机械或电子设计等等.根据求导数的方法,可分为2大类.第一类,若f具有解析函数形式,知道x后求导数速度快.第二类,使用数值差分来求导数.根据使用模型不同,分为非约束最优化.约束最优化.最小二乘最优化.   什么是L…
最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理. 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变更 这是第一篇:<解读Raft(一 算法基础)> 什么是RAFT 分布式系统除了提升整个体统的性能外还有一个重要特征就是提高系统的可靠性. 提供可靠性可以理解为系统中一台或多台的机器故障不会使系统不可用(或者丢失数据). 保证系统可靠性的关键就是多副本(即数据需要有备份),一旦有多副本,那么久面临…
 算法基础-字符移位 时间限制:1秒 空间限制:32768K 题目: 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间. 你能帮帮小Q吗? 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出移位后的字符串. 输入示例: AkleBiCeilD 输出示例: kleieilABCD 思路: 遍历输入字符串中每一个元素,大写放进一个字符串2,小写放另外一个字符串3,…
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好): import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1…
1>递归相关: 递归:递归算法是一种直接或间接地调用自身算法的过程,在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且                   易于理解: 特点: (1)递归就是在过程或函数中调用自身: (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口: (3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低,所以一般不提倡使用递归算法设计程序: (4)在递归调用的过程当中系统为每一层的返回点,局部量等开辟了栈来存储,递归次…
本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&…
算法基础:BFS和DFS的直观解释 https://cuijiahua.com/blog/2018/01/alogrithm_10.html 一.前言 我们首次接触 BFS 和 DFS 时,应该是在数据结构课上讲的 “图的遍历”.还有就是刷题的时候,遍历二叉树我们会经常用到BFS和DFS.它们的实现都很简单,这里我就不哆嗦去贴代码了. 想看代码的可以看<剑指Offer(三十八):二叉树的深度>这个题目就可以利用BFS和DFS进行求解.那么,这两者“遍历” 的序列到底有何差别? 本篇文章就单纯来…
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <map> #include <iostream> #define inf 0x3f3f3f3f #defin…
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的,所以要注意去除这个重复部分的. #include<bits/stdc++.h> using namespace std; ; typedef long long ll; ; int main(){ ll n,m,ans=; scanf("%lld%lld",&n,&am…
目录 目录 前言 手动释放内存导致的问题 垃圾判定方法 哪些对象是垃圾? 引用计数算法 可达性分析法 垃圾收集算法 标记-清除 优点 缺点 优化 标记-复制 优点 缺点 优化 标记-整理 优点 缺点 优化 参考文档 目录 JVM-运行时数据区域 JVM-对象及其内存布局 JVM-垃圾收集算法基础 前言 上一篇文章对JVM的对象的内存布局以及对象创建逻辑等内容进行了梳理,本篇文章对常见的垃圾回收算法以及HotSpot垃圾回收器进行深入解析. 手动释放内存导致的问题 在托管代码出现之前,我们申请一片…
dfs前置知识: 递归链接:0基础算法基础学算法 第六弹 递归 - 球君 - 博客园 (cnblogs.com) dfs深度优先搜索:0基础学算法 搜索篇第一讲 深度优先搜索 - 球君 - 博客园 (cnblogs.com) 本讲前置知识: 队列:0基础学算法 第三弹 队列 - 球君 - 博客园 (cnblogs.com) ↑早期作品,慎用↑ 我们在上一讲稍微说了一下关于深度优先搜索的常识,今天我们的主题是广度优先搜索 广度优先搜索,简称BFS,同dfs一样,属于十分常见的算法,也是最常用的搜索…
算法基础~链表~排序链表的合并(k条) 1,题意:已知k个已排序链表头结点指针,将这k个链表合并,合并后仍然为有序的,返回合并后的头结点. 2,方法之间时间复杂度的比较: 方法1(借助工具vector封装好的sort方法):将k * n个结点放到vector,则原 vector的排序时间复杂度是 O(nlogn); 有k*n个结点的排序,时间复杂度是 O(knlog(kn)); 方法2(分制后相连法),分制:这里咱要想到高中的DNA复制~一个DNA复制生成K个DNA的过程. [1----复制--…
使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每天问问自…
第一章  Java基础 程序目标:减轻现实生活中一类人的工作量,提高工作效率. 学员最终可以书写系统: 超市管理系统,POS机系统等 入库单 销售单 01.课程重点 五大重点: 01.分支(选择)结构 02.循环结构 03.数组 04.二重循环 05.带参方法 02.什么是计算机程序? 解析:就是为了完成某一项工作而执行的一系列有序指令的集合. 03.Java相关的技术有哪些? JavaSE(桌面应用开发)  JavaEE(Web开发) 老师,你教教我如何判定一个程序是桌面程序还是web程序?…
关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是什么 在培训期间,老师与学生的时间应该如何分配 蓝鸥培训的主要内容是什么 iOS开发技术 Unity3D开发技术 Android开发技术 HTML5开发技术 iOS开发技术的学习路线图 [x] C语言技术基础 [x] OC开发基础 [x] UI界面开发基础 [x] 项目数据逻辑 [x] iOS高级程…
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件 高级语言:站在人的角度,说人话:即用人类的字符去编写程序,屏蔽了硬件操作 2.优缺点 语言 优点 缺点 机器语言 最底层,执行速度快 最复杂,开发效率最低 汇编语言 比较底层,执行速度较快 复杂,开发效率低 高级语言 编译型: 执行速度快,不依赖语言环境运行 跨平台差 解释型: 跨平台好,一份…
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件 高级语言:站在人的角度,说人话:即用人类的字符去编写程序,屏蔽了硬件操作 2.优缺点 语言 优点 缺点 机器语言 最底层,执行速度快 最复杂,开发效率最低 汇编语言 比较底层,执行速度较快 复杂,开发效率低 高级语言 编译型: 执行速度快,不依赖语言环境运行 跨平台差…
1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事,内容整合来自: 零基础学习openstack(上)[中级篇] 零基础学习openstack(下)[中级篇] 是在 零基础学习openstack[初级篇]基础上的一个继续: 初级篇,我们主要是有这么一个概念,openstack的组成openstack由哪些部分来组成: Identity(代号为“Ke…
概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化. Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数…
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用API   一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能…
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 4. 垃圾回收机制(Garbage Collection) 5. this关键字 6. static 关键字 7. 静态初始化块 8. 参数传值机制 9. 包 第5章 Java面向对象进阶 1. 继承 2. Object类 3. super关键字 4. 封装 5. 多态(polymorphism)…
Spark基础学习精髓 1 Spark与大数据 1.1 大数据基础 1.1.1 大数据特点 存储空间大 数据量大 计算量大 1.1.2 大数据开发通用步骤及其对应的技术 大数据采集->大数据预处理->大数据存储->大数据处理->大数据可视化 (1)大数据采集技术 分布式架构.多种采集技术混合使用 web数据采集:shell编程.爬虫工具.爬虫程序开发.HTTP协议.TCP/IP基本原理及Socket程序接口.编程语言.数据格式转换.分布式存储的命令和接口(HDFS.HBase等).…
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/connected-app-basics https://help.salesforce.com/articleView?id=sf.connected_app_overview.htm&type=5 我曾经写过好几篇博客涉及到connected app的使用,比如 salesforce 零基础学习(…
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月1日开始,在<博客园>平台进行<VR零基础学习开发>系列文章连载,敬请关注. 在此呢,我写下此文,希望能够帮助那些有相同疑惑的朋友. VR到底是什么. VR是Virtual Reality的缩写,中文的意思就是虚拟现实. 虚拟现实(VR)是近几年来国内外科技界关注的一个热点,其发展也是…
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. body:页面的主体标签,页面展现的内容就放置在这里面. script:脚本标签,可以把js脚本代码放置在这个标签内,也可以使用这个标签的src属性引入一个外部标签. title:页面的标题.我们有一个HTML的学习交流群,搜索四八七中间是一七一最后是839,平时提供大家一起学习HTML,每天有免费H…
之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间. 2.时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n).一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)…