本文目錄一覽:
python數據類型都有哪些
數據類型是每種編程語言必備的屬性,只有給數據賦予明確的數據類型,計算機才能對數據進行處理運算,因此,使用正確的數據類型是十分有必要的,以下是Python編程常用的數據類型:
一、數字型
Python數字類型主要包括int(整型)、long(長整型)和float(浮點型),但是在Python3中就不再有long類型了。
1、int(整型)
在32位機器上,整數的位數是32位,取值範圍是-231~231-1,即-2147483648~214748364;在64位系統上,整數的位數為64位,取值範圍為-263~263-1,即9223372036854775808~9223372036854775807。
2、long(長整型)
Python長整型沒有指定位寬,但是由於機器內存有限,使用長的長整數數值也不可能無限大。
3、float(浮點型)
浮點型也就是帶有小數點的數,其精度和機器有關。
4、complex(複數)
Python還支持複數,複數由實數部分和虛數部分構成,可以用 a + bj,或者 complex(a,b) 表示, 複數的實部 a 和虛部 b
都是浮點型。
二、字符串
在Python中,加了引號的字符都被認為是字符串,其聲明有三種方式,分別是:單引號、雙引號和三引號;Python中的字符串有兩種數據類型,分別是str類型和unicode類型,str類型採用的ASCII編碼,無法表示中文,unicode類型採用unicode編碼,能夠表示任意字符,包括中文和其他語言。
三、布爾型
和其他編程語言一樣,Python布爾類型也是用於邏輯運算,有兩個值:True(真)和False(假)。
四、列表
列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型,可對集合進行創建、查找、切片、增加、修改、刪除、循環和排序操作。
五、元組
元組和列表一樣,也是一種序列,與列表不同的是,元組是不可修改的,元組用”()”標識,內部元素用逗號隔開。
六、字典
字典是一種鍵值對的集合,是除列表以外Python之中最靈活的內置數據結構類型,列表是有序的對象集合,字典是無序的對象集合。
七、集合
集合是一個無序的、不重複的數據組合,它的主要作用有兩個,分別是去重和關係測試。
什麼是ECC?
ECC
ECC是“Error Checking and Correcting”的簡寫,中文名稱是“錯誤檢查和糾正”。ECC是一種能夠實現“錯誤檢查和糾正”的技術,ECC內存就是應用了這種技術的內存,一般多應用在服務器及圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。
要了解ECC技術,就不能不提到Parity(奇偶校驗)。在ECC技術出現之前,內存中應用最多的是另外一種技術,就是Parity(奇偶校驗)。我們知道,在數字電路中,最小的數據單位就是叫“比特(bit)”,也叫數據“位”,“比特”也是內存中的最小單位,它是通過“1”和“0”來表示數據高、低電平信號的。在數字電路中8個連續的比特是一個字節(byte),在內存中不帶“奇偶校驗”的內存中的每個字節只有8位,若它的某一位存儲出了錯誤,就會使其中存儲的相應數據發生改變而導致應用程序發生錯誤。而帶有“奇偶校驗”的內存在每一字節(8位)外又額外增加了一位用來進行錯誤檢測。比如一個字節中存儲了某一數值(1、0、1、0、1、0、1、1),把這每一位相加起來(1+0+1+0+1+0+1+1=5)。若其結果是奇數,對於偶校驗,校驗位就定義為1,反之則為0;對於奇校驗,則相反。當CPU返回讀取存儲的數據時,它會再次相加前8位中存儲的數據,計算結果是否與校驗位相一致。當CPU發現二者不同時就作出視圖糾正這些錯誤,但Parity有個缺點,當內存查到某個數據位有錯誤時,卻並不一定能確定在哪一個位,也就不一定能修正錯誤,所以帶有奇偶校驗的內存的主要功能僅僅是“發現錯誤”,並能糾正部分簡單的錯誤。
通過上面的分析我們知道Parity內存是通過在原來數據位的基礎上增加一個數據位來檢查當前8位數據的正確性,但隨着數據位的增加Parity用來檢驗的數據位也成倍增加,就是說當數據位為16位時它需要增加2位用於檢查,當數據位為32位時則需增加4位,依此類推。特別是當數據量非常大時,數據出錯的幾率也就越大,對於只能糾正簡單錯誤的奇偶檢驗的方法就顯得力不從心了,正是基於這樣一種情況,一種新的內存技術應允而生了,這就是ECC(錯誤檢查和糾正),這種技術也是在原來的數據位上外加校驗位來實現的。不同的是兩者增加的方法不一樣,這也就導致了兩者的主要功能不太一樣。它與Parity不同的是如果數據位是8位,則需要增加5位來進行ECC錯誤檢查和糾正,數據位每增加一倍,ECC只增加一位檢驗位,也就是說當數據位為16位時ECC位為6位,32位時ECC位為7位,數據位為64位時ECC位為8位,依此類推,數據位每增加一倍,ECC位只增加一位。總之,在內存中ECC能夠容許錯誤,並可以將錯誤更正,使系統得以持續正常的操作,不致因錯誤而中斷,且ECC具有自動更正的能力,可以將Parity無法檢查出來的錯誤位查出並將錯誤修正。
2 ECC(Elliptic Curve Cryptosystems )橢圓曲線密碼體制
2002年,美國SUN公司將其開發的橢圓加密技術贈送給開放源代碼工程
公鑰密碼體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類。
橢圓曲線密碼體制來源於對橢圓曲線的研究,所謂橢圓曲線指的是由韋爾斯特拉斯(Weierstrass)方程:
y2+a1xy+a3y=x3+a2x2+a4x+a6 (1)
所確定的平面曲線。其中係數ai(I=1,2,…,6)定義在某個域上,可以是有理數域、實數域、複數域,還可以是有限域GF(pr),橢圓曲線密碼體制中用到的橢圓曲線都是定義在有限域上的。
橢圓曲線上所有的點外加一個叫做無窮遠點的特殊點構成的集合連同一個定義的加法運算構成一個Abel群。在等式
mP=P+P+…+P=Q (2)
中,已知m和點P求點Q比較容易,反之已知點Q和點P求m卻是相當困難的,這個問題稱為橢圓曲線上點群的離散對數問題。橢圓曲線密碼體制正是利用這個困難問題設計而來。橢圓曲線應用到密碼學上最早是由Neal Koblitz 和Victor Miller在1985年分別獨立提出的。
橢圓曲線密碼體制是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制。解橢圓曲線上的離散對數問題的最好算法是Pollard rho方法,其時間複雜度為,是完全指數階的。其中n為等式(2)中m的二進制表示的位數。當n=234, 約為2117,需要1.6×1023 MIPS 年的時間。而我們熟知的RSA所利用的是大整數分解的困難問題,目前對於一般情況下的因數分解的最好算法的時間複雜度是子指數階的,當n=2048時,需要2x1020MIPS年的時間。也就是說當RSA的密鑰使用2048位時,ECC的密鑰使用234位所獲得的安全強度還高出許多。它們之間的密鑰長度卻相差達9倍,當ECC的密鑰更大時它們之間差距將更大。更ECC密鑰短的優點是非常明顯的,隨加密強度的提高,密鑰長度變化不大。
德國、日本、法國、美國、加拿大等國的很多密碼學研究小組及一些公司實現了橢圓曲線密碼體制,我國也有一些密碼學者做了這方面的工作。許多標準化組織已經或正在制定關於橢圓曲線的標準,同時也有許多的廠商已經或正在開發基於橢圓曲線的產品。對於橢圓曲線密碼的研究也是方興未艾,從ASIACRYPTO’98上專門開闢了ECC的欄目可見一斑。
在橢圓曲線密碼體制的標準化方面,IEEE、ANSI、ISO、IETF、ATM等都作了大量的工作,它們所開發的橢圓曲線標準的文檔有:IEEE P1363 P1363a、ANSI X9.62 X9.63、 ISO/IEC14888等。
2003年5月12日中國頒布的無線局域網國家標準 GB15629.11 中,包含了全新的WAPI(WLAN Authentication and Privacy Infrastructure)安全機制,能為用戶的WLAN系統提供全面的安全保護。這種安全機制由 WAI和WPI兩部分組成,分別實現對用戶身份的鑒別和對傳輸的數據加密。WAI採用公開密鑰密碼體制,利用證書來對WLAN系統中的用戶和AP進行認證。證書裡面包含有證書頒發者(ASU)的公鑰和簽名以及證書持有者的公鑰和簽名,這裡的簽名採用的就是橢圓曲線ECC算法。
加拿大Certicom公司是國際上最著名的ECC密碼技術公司,已授權300多家企業使用ECC密碼技術,包括Cisco 系統有限公司、摩托羅拉、Palm等企業。Microsoft將Certicom公司的VPN嵌入微軟視窗移動2003系統中。
python有哪些數據類型
Numbers(數字型):
即我們常說的1,2,3等等這些數字,Python有兩個常見的數據類型轉化函數:int和float,一般數據類型可以用來做一些算術功能,如加減乘除乘方等等,還可以用作比較功能,一般返回的是true和false,也就是大於、等於、小於、小於等於諸如此類的有很多,這裡就不一一解釋了。
String(字符串):
字符串是Python中比較常見的數據類型之一,能夠使用str函數將其他類型的數據強制轉換為字符串類型,有三種生成方法,即單引號’XXX’,雙引號”XXX”,三引號”’XXX ”’,其中三引號一般用於字符串內容較長的時候。
List(列表):
列表可以說是Python中最為活躍的一個數據類型,使用也很頻繁,操作也很多,可以通過list函數或方括號[]進行列表的創建。常見函數如求長度,用len,合併多個列表用+,列表元素重複*等等。
Tuple(元組):
元組可以看成是一種不可修改的特殊列表,可以通過小括號()或者tuple函數來創建,即便是只有一個元素,元組中的元素最後也要有逗號。常見操作有求長度len,元組元素重複*,元組拼接+,查看最值max、min等。
Dictionary(字典):字符串、列表、元組都是有序的數據類型,字典是無序的數據類型,主要是用來存放具有一定映射關係的數據。可以通過兩種方法創建,1、{}2、dict函數創建。
set(集合):
集合不能有重複元素,可以看做是列表和字典的“雜合體”,可以通過三種方式創建,1、set函數,空集合只能用這種方法;2、{}創建,3、創建凍集合,frozenst。
請教,直接調Python接口做ECC簽名
從原理上可以這樣處理:用私鑰對一個數據進行簽名,然後用公鑰對這個簽名進行驗證。如果驗證通過即可證明這對密鑰對是匹配的。
python ecc運算和javasript運算結果不一樣
不一樣。
javasript的按位的結果是有符號整數,而pythonecc的是無符號整數。
Java環境可用來開發能在任何計算平台上運行的應用軟件。
它實際上是一種非常基本且結構緊湊的技術,而它對WorldWideWeb以及商業的總體影響已可同電子表格對PC機的影響相比擬。
原創文章,作者:NJIQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148429.html