Python 求平方剩餘和離散對數
在密碼學上理論學習上,難免會有些計算量大的運算規則,像求解離散對數。這時最好的方案就是用計算機那億萬級的運算效能了,把這些規則用程式設計很容易描述,such as Python,優雅的藝術語言
離散對數:
#coding=utf-8 '''Author:Frank.ZhangLongQi Date:2017-01 e-mail:[email protected] Descrip:離散對數 ''' F=5 #F x1=0 #本原根x y1=1 #本原根y a=1 #a b=1 #b x2=x1 y2=y1 def reverse(d,mod): for tmp in range(1,mod): if tmp*d%mod==1: return tmp for i in range(1,9): if x1==x2 and (y1+y2)==0: x2,y2=0,0 print("{0}g:".format(i+1),end="") print("(0,0)") exit() else: if x1==x2 and (y1-y2==0): t=reverse(2*y1,F) tmp=(3*x1**2+a)*t%F else: if x1==x2: print("{0}g:".format(i+1),end="") print("(0,0)******over") exit() t=reverse(x2-x1,F) tmp=(y2-y1)*t%F x3=(tmp**2-x1-x2)%F y3=(tmp*(x1-x3)-y1)%F print("{0}g:".format(i+1),end="") print((x3,y3)) x2=x3 y2=y3
求平方剩餘:
F=5 #F=5
l=[]
for b in range(0,F):
tmp=(b**3+b+1)%F #函式y=x**3+x+1
t=(F-1)/2
if (tmp**t)%F==1:
for i in range(1,F):
if (i**2-tmp)%F==0:
l.append([b,i])
print(l)
相關推薦
Python 求平方剩餘和離散對數
在密碼學上理論學習上,難免會有些計算量大的運算規則,像求解離散對數。這時最好的方案就是用計算機那億萬級的運算效能了,把這些規則用程式設計很容易描述,such as Python,優雅的藝術語言離散對數:#coding=utf-8 '''Author:Frank.ZhangLo
Python求1000以內所有3或5的倍數的和。
IV col 結果 range python spa color pytho pri 1 a=0 2 for n in range(1,1000): 3 if n%3==0 or n%5==0: 4 a=a+n 5 print(a) 運行結果:
python 求階乘之和。求1+2!+3!+...+20!的和
blank HR IV sharp ML 術語 lis get 功能 階乘:也是數學裏的一種術語;階乘指從1乘以2乘以3乘以4一直乘到所要求的數;在表達階乘時,就使用“!”來表示。如h階乘,就表示為h!;階乘一般很難計算,因為積都很大。 分析:1、階乘的計算就是比較麻煩的一
【科技】原根的快速判斷方法以及對1求離散對數的另一種想法
鑑於實際需要,本文中所選的模數$p$總是一個平凡質數,並用$\phi$表示$\phi (p) = p - 1$。 原根的定義: 基於$p$是質數,我們可以很簡單的把它的定義想成,如果一個數$a \in [0, p - 1]$是原根的充要條件是對於$x \in [0, p - 2]$,$a^{x}$互不相同
Python練習筆記 - -求數列的和
Python練習筆記 - - 求數列的和 題目描述 輸入描述: 輸出描述: 示例1 解題思路&程式碼段 函式小結 map()函式 split()函式 str.format()
python 求從1加到100的和,join的用法
li=[] def func3(x): li.append(str(x)) if x==1: return 1 return x+func3(x-1) # print(func3(100)) re=func3(100) print('%s=%s'%('+'.j
Python求巢狀列表中每個元素的和
L=[[3,5,8],10,[[13,14],15,18],20] #寫一個函式打印出所有元素print_list,返回這個列表中所有元素的和 使用type(x)進行判斷 L=[[3,5,8],10,[[13,14],15,18],20]
牛客網線上程式設計(六):求數列的和-python
題目描述 數列的第一項為n,以後各項為前一項的平方根,求數列的前m項的和。 輸入描述: 輸入資料有多組,每組佔一行,由兩個整數n(n < 10000)和m(m < 1000)組成,n和
python求一個時間點的前一個月和後一個月
python如何獲取一個時間點的前一個月和後一個月,網上雖然有很多教程,但是本人感覺太雜了而且不太好用,研究一番之後決定提供一種方法和思路。 #!/usr/bin/env python # -*- c
Python求出 1+2!+3!+...+20!的和
在不使用遞迴函式,使用迴圈巢狀的情況下實現1+2!+3!+…+20!的和 也就是 1+(1×2)+(1×2×3)+(1×2×3×4) sum=0 #定義和的變數 sum n=1 #定義累乘的初始值 for i in range(1,21): #range函式(1
離散對數和橢圓曲線加密原理
序言 現代公鑰加密系統中,常用的加密演算法除了RSA還有離散對數加密和橢圓曲線加密。這兩者原理比較相似,在這裡一併介紹。 離散對數問題 我們在中學裡學的對數問題是指, 給定正實數aa和axax,求xx。也就是計算x=logaaxx=lo
用python求一重積分和二重積分
首先是對一元函式求積分,使用Scipy下的integrate函式:from scipy import integrate def g(x): return (1-x**2)**0.5 #用integrate下的quad函式可以同時求出積分結果和誤差 res,err=
2019/01/06求平方與倒數序列的部分和
本題要求對兩個正整數m和n(m≤n)編寫程式,計算序列和m 2 +1/m+(m+1) 2 +1/(m+1)+⋯+n 2 +1/n。 輸入格式: 輸入在一行中給出兩個正整數m和n(m≤n),其間以空格分開。 輸出格式: 在一行中按照“sum = S”的格式輸出部
求任意底數和任意真數的對數
#include<stdio.h> #include<math.h> int loga(int r,int b); int main(void) { int r,b,l; printf("What's the base?\n"); sca
求離散對數
#include #define MAX 100 void main() { int i,j, num,sum=0, m[MAX]={0},mm[MAX]={0},mm1[MAX]={0}
Python求特徵值和特徵向量、奇異值分解
問題1描述: 求解矩陣A=[-1 2 -3; 4 -6 6]的2範數。 其中,矩陣A的2範數為矩陣ATAA^{T}AATA的最大特徵值開平方根。 即利用Python求解2範數如下所示: >>> A=np.array([[-1,2,-3],[4,
python 求8位各不相同的整數,1357位之和等於2468位之和,且為完全平方數
一、解題思路: 二、引用的方法: 1)求平方根並判斷平方根是否為整數: import math math.sqrt(64)----但是得到的結果是含有一位小數點得到的結果是8.0
Python 求兩個 list 的交集和差集
有時候,為了需求,需要統計兩個 list 之間的交集,並集,差集。查詢了一些資料,現在總結在下面: 1. 獲取兩個list 的交集 #方法一:a=[2,3,4,5]b=[2,5,8]tmp = [val for val in a if val in b]print
密碼學之Pohlig-Helliman演算法求離散對數
對於一個素數p,先求n=p-1並將其分解為x個素數因子,對於每一個因子q及其指數c,應用Pohlig-Helliman演算法求解(a0,a1,a3............ac-1) 根據a=(for i=0 to c-1:ai*q^i)+s*q^(s為某一整數) 求得 x
python 求200以內平方為迴文數的N的值
for n in range (1,201): sq = n*n str_sq = str(sq) str__sq = str_sq[::-1] #把字串倒序