- 博客(5)
- 收藏
- 关注
原创 MbedTLS中的Montgomery算法实现解析(三)
MbedTLS中的Montgomery算法实现解析(三)在前面的两篇博客中,我们详细讨论了Montgomery算法的数学原理以及MbedTLS中是如何快速求得-N-1(mod n)。在这一篇博客中,我们将探讨MbedTLS中的蒙哥马利约减(Montgomery reduction)和蒙哥马利模乘(Montgomery multiplication)是如何实现的。在阅读本博客之前,建议先掌握MbedTLS的大数表示方式蒙哥马利约减Montgomery reduction在我们的数学推导中,蒙哥马利约减
2021-11-13 15:45:28
1025
原创 MbedTLS中的Montgomery算法实现解析(二)
MbedTLS中的Montgomery函数Montgomery initialization在第一篇博客中,我们主要介绍了Montgomery算法的数学原理,下面我们将介绍在代码上要如何实现Montgomery算法。在MbedTLS中,采用了232作为R,这是为了便于处理大数,在这里我们的mbedtls_mpi_uint类型数据定义的是32位的整数。那么如果涉及到模除**232**的操作,我们只需要针对X->p[0],也就是低32位即可。\\mm = -N ^-1 mod Rstatic v
2021-11-11 20:34:15
518
原创 MbedTLS中的Montgomery算法实现解析(一)
MbedTLS中的Montgomery算法实现解析(一)蒙哥马利算法模乘介绍蒙哥马利模乘算法主要是为了进行大数运算a×b mod n,并且针对CPU进行了并行优化,来快速计算模乘。在介绍蒙哥马利模乘之前,先让我们来了解蒙哥马利约减(Montgomery reduction)蒙哥马利约减(Montgomery reduction)首先,让我们来考虑一个简单的问题:a mod n如果a是一个2048位的整数,n是一个1024位的整数,那我们要如何来计算结果呢?如果我们直接采用相除的方式,不论在时
2021-11-11 17:10:01
1224
原创 Leetcode算法-两两交换链表节点(循环法+递归法)
今天做了一条Leetcode的算法题,感觉从一道算法题里学到许多,于是通过这篇博客记录下来。题目非常简单:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。比如一个链表1->2->3->4 需要你将链表中两两节点互换,输出2->1->4->3。第一种方法就是循环遍历的方法:直接遍历整个链表,然后两两交换一下代码如下:class Solution: def swapPairs(self
2020-07-21 11:32:50
374
1
原创 Leetcode算法题二分图Python3解法(88%时间 100%空间)
先放题目:给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph[i] 中不存在i,并且graph[i]中没有重复的值。示例 1:输入: [[1,3], [0,2], [1,3]
2020-07-16 10:33:27
880
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人