Linux crypto相關知識的匯總 Linux加密框架crypto中的算法和算法模式(一)

Linux加密框架中的算法和算法模式

  • Linux加密框架中的算法和算法模式(一)_家有一希的博客-CSDN博客
  • 加密框架支持的密碼算法主要是對稱密碼算法和哈希算法,暫時不支持非對稱密碼算法。除密碼算法外,加密框架還包括偽隨機數生成算法壓縮算法等非密碼算法。

對稱密碼算法

  • 對稱密碼算法分為分組密碼算法和序列密碼算法兩種,其中分組密碼算法將是對稱密碼算法的發展趨勢重點。分組密碼算法通常由密鑰擴展算法和加密(解密)算法兩部分組成,其中密鑰擴展算法將b字節的密鑰擴展成r個子密鑰。加密算法有一個密碼學上的弱函數f與r個子密鑰迭代r次實現。
  • 加密框架中支持的對稱密碼算法基本上都是分組密碼算法,但是也支持序列密碼算法,只是將序列密碼算法定義為分組長度為1的特殊的分組密碼算法。

DES和3DES算法

  • DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標注(FIPS),并授權在非密級政府通信中使用。3DES(即Triple DES)是DES向AES過渡的加密算法,是比DES更安全的一種變形,3DES使用2條56位的密鑰對數據執行三次DES算法,加密過程是加密e-解密d-加密e,解密過程是解密e-加密d-解密e。
  • 加密框架支持DES算法和3DES算法,記為des和3des_ede,實現源碼為des_generic.c。
  • des_generic.c - crypto/des_generic.c - Linux source code (v5.15.11) - Bootlin

AES算法

  • AES全稱Advanced Encryption Standard,即高級加密標準,在密碼學上又稱為Rijndeal算法,是美國聯邦政府采用的一種區塊加密標準,用來替代原先的DES算法。AES的基本要求是采用對稱分組密碼體制,密鑰的長度最少支持128、186、256位,分組長度為128位。
  • 2000年10月2日,美國政府正式宣布選中比利時密碼學家Joan Deamen和incent Rijmen提出的Rijndeal算法組為AES。嚴格地說,AES和Rijndeal算法并不完全一樣,雖然在實際應用中二者可以互換,因為Rijndeal算法支持更大的分組和密鑰長度。Rijndeal算法使用的密鑰和分組長度均為32的整數倍,下限為128位,上限位256位。性能而言,AES的運算速度遠大于3DES,安全性不低于3DES。
  • 加密框架支持AES算法,記為aes,實現源碼為aes_generic.c。
  • aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.11) - Bootlin

Blowfish算法

  • Blowfish(河豚)算法是由Bruce Schneier設計的一個完全開源的算法。Blowfish算法是一個分組長度為64位、密鑰長度可變的對稱分組密碼算法。Blowfish算法具有加密速度快、緊湊、密鑰長度可變、可免費使用等特點,已被廣泛應用于眾多加密軟件。由于Blowfish算法采用變長密鑰,這在給用戶帶來極大便利的同時也有隱患。由于算法加解密核心在于密鑰的選擇和保密,但在實際應用中經常使用一些弱密鑰對信息資源進行加密,導致存在很大的安全隱患。
  • 加密框架支持Blowfish算法,記為blowfish,實現源碼為blowfish_generic.c和blowfish_common.c。?
  • blowfish_common.c - crypto/blowfish_common.c - Linux source code (v5.15.11) - Bootlin
  • blowfish_generic.c - crypto/blowfish_generic.c - Linux source code (v5.15.11) - Bootlin

Twofish算法

  • Twofish算法是Bruce Schneier的Counterpane公司設計的完全開源的算法。Twofish算法是進入NIST第二輪AES算法篩選5種算法之一,滿足AES的基本要求。
  • 加密框架支持Twofish算法,記為twofish,其實現源碼為twofish_generic.c和twofish_common.c。
  • twofish_common.c - crypto/twofish_common.c - Linux source code (v5.15.11) - Bootlin
  • twofish_generic.c - crypto/twofish_generic.c - Linux source code (v5.15.11) - Bootlin

RC4算法

  • RC4算法是Ronald Rivest在1987年設計的密鑰長度可變的流加密算法簇,之所以稱其為簇,是因為其核心部分的sbox可為任意長度,但一般為256字節。RC4算法的速度可達到DES算法速度的10倍左右,且具有很高級別的非線性。RC也成為ARC4(Alleged RC4,即所謂的RC4),因為RSA從未正式發布過這個算法。
  • 加密框架支持RC4算法,記為arc4,實現源碼為arc4.c。?
  • arc4.c - crypto/arc4.c - Linux source code (v5.15.11) - Bootlin

CAST算法

  • CAST算法包括CAST5(也稱CAST-128)和CAST6(也稱CAST-256)兩種,由Carliasle Adams和Stafford Tavares分別于1996年和1998年提出的,其中CAST5是一種類似DES的置換組合網絡(SPN)加密系統,而CAST6是作為AES的競選算法提出的。
  • CAST5是一種12或16循環的Feistel密碼,塊長度為64位,密鑰長度可變,從40位到128位按8位遞增,并且只有當密鑰長度大于80位時,才允許使用16循環。CAST6是一種48循環的Feistel密碼,塊長度位128位,密鑰長度可變,從128位到256位按32位遞增。
  • 加密框架支持CAST5和CAST6算法,記為cast5和cast6,實現源碼為cast5.c和cast6.c。
  • 注:CAST128和CAST5是同一的,不是指使用128位密鑰。為區分不同密鑰長度的操作,在算法名后需要加上密鑰長度,如使用40位密鑰時表示為CAST5-40,使用128位密鑰時表示為CAST5-128。?
  • cast5_generic.c - crypto/cast5_generic.c - Linux source code (v5.15.11) - Bootlin
  • cast6_generic.c - crypto/cast6_generic.c - Linux source code (v5.15.11) - Bootlin

?TEA算法

  • TEA(Tiny Encryption Algorithm)算法是由劍橋大學計算機實驗室的David Wheeler和Roger Needham于1994年提出的一種分組密碼算法,塊長度為64位,密鑰長度為128位。TEA算法利用不斷增加的Delta(黃金分割率)值作為變化,使得每次的加密結果是不同的。TEA算法的迭代次數是可變的,建議為32輪。例如騰訊公司的產品使用到了TEA算法,但迭代次數不是標準的32輪而是16輪。TEA算法簡單易懂,容易實現,但存在很大的缺陷,如相關密鑰攻擊。TEA經歷了多個版本,包括XTEA、Block TEA和XXTEA等。
  • 加密框架支持TEA算法及后續的XTEA和Block TEA算法,記為tea、xtea和xate,其實現源碼為tea.c。
  • tea.c - crypto/tea.c - Linux source code (v5.15.11) - Bootlin

Khazad算法

  • Khazad算法是由Paulo.S.L.M.Barreto和Vincent Rijmen于2000年聯合提出的。Khazad算法是歐洲NESSIE(new European Schemes for signature、integrity and encryption)密碼計劃中進入第二階段的候選加密算法之一。Khazad算法的分組長度為64位,密鑰長度為128位。Khazad算法采用對合結構,加密和解密僅在密鑰生成算法上存在差異。
  • 加密框架支持Khazad算法,記為khazad,其實現源碼為khazad.c。
  • 注:Khazad算法名稱選自科幻小說《指環王》中的虛擬地址。?
  • khazad.c - crypto/khazad.c - Linux source code (v5.15.11) - Bootlin

?Serpent算法

  • Serpent算法是由Ross Anderson、Eli Biham和Lars Krcudsen聯合開發的。Serpent算法是進入NIST第二輪AES篩選的5個算法之一,滿足AES的基本要求。
  • 加密框架支持Serpent算法,記為serpent,其實現源碼為serpent.c。
  • 注:Serpent意為大蛇,圣經中記載Serpent是撒旦的化身,是其引誘夏娃吃下禁果的。
  • 注:Rijndael、Serpent和Twofish是入圍第三輪AES篩選的三個算法,性能方面,Serpent被認為是最安全的,Rijndael速度最快,Twofish居中。
  • serpent_generic.c - crypto/serpent_generic.c - Linux source code (v5.15.11) - Bootlin

Anubis算法

  • Anubis算法是一種分組對稱算法,塊長度為128位,密鑰長度從128位到320位可變。
  • 加密框架支持Anubis算法,記為anubis,其實現源碼位anubis.c。
  • 注:Anubis意為埃及神話中的阿努比斯神,引導亡靈的神,豺頭人身神。
  • anubis.c - crypto/anubis.c - Linux source code (v5.15.11) - Bootlin

?Camellia算法

  • Camellia(山茶花)算法是由三菱和日本電報電話(NTT)聯合發布的,被歐盟NESSIE項目列為選定算法,被日本CRYPTREC項目列為推薦算法。Camellia算法塊長度為128位,密鑰長度128位、192位和256位可選,具有和AES同等級的安全強度和運算量。
  • 加密框架支持Camellia算法,記為camellia,其實現源碼為camellia.c。
  • camellia_generic.c - crypto/camellia_generic.c - Linux source code (v5.15.11) - Bootlin

哈希算法?

MDx系列算法

  • MDx系列算法是應用范圍非常廣泛的一個算法家族,其中MD是Message Digest(消息摘要)的縮寫,x表示算法版本(如MD2、MD3、MD4、MD5)。MDx系列算法最早由Ron Rivest(RSA公司)于1992年提出的,MD2、MD4、MD5都產生16字節(128位)的校驗值(hash值)。目前主流的MDx系列算法為MD5,但已被中國山東大學王小云教授攻破,可以快速找到碰撞(摘要相同的不同消息)。
  • 加密框架支持MDx系統算法中的MD4和MD5,分別記為md4和md5,其實現代碼分別為md4.c和md5.c。
  • md4.c - crypto/md4.c - Linux source code (v5.15.11) - Bootlin
  • md5.c - crypto/md5.c - Linux source code (v5.15.11) - Bootlin

?SHA系列算法

  • SHA(Secure Hash Algorithm)是美國國家標準技術研究院(NIST)制定的。SHA系列算法的摘要長度分貝為:SHA1為20字節(160位)、SHA256為32字節(256位)、SHA384位48字節(384位)、SHA512為64字節(512位),其中SHA1應用較為廣泛,主要應用于CA和數字證書中,但已被中國山東大學王小云教授攻破,可以快速找到碰撞。由于SHA系列算法的消息摘要長度較長,因此其運算速度與MD5相比也相對較慢。
  • 加密框架支持SHA系列算法中的SHA1、SHA224和SHA256以及SHA384和SHA512,分別記為sha1、sha224和sha256以及sha384和sha512,其實現源碼sha1_generic.c、sha256_generic.c和sha512_generic.c。
  • sha1_generic.c - crypto/sha1_generic.c - Linux source code (v5.15.11) - Bootlin
  • sha256_generic.c - crypto/sha256_generic.c - Linux source code (v5.15.11) - Bootlin
  • sha3_generic.c - crypto/sha3_generic.c - Linux source code (v5.15.11) - Bootlin
  • sha512_generic.c - crypto/sha512_generic.c - Linux source code (v5.15.11) - Bootlin

?

?Whirlpool算法

  • Whirlpool算法是由Vincent Rijmen和Paulo S.L.M.Barreto于2000年提出的,號稱最安全的摘要算法,其摘要長度為512位,已被列入ISO標準。從發布至今共經歷了三個版本,分別為whirlpool-O、Whirlpool-T和Whirlpool。
  • 加密框架除支持標準的摘要長度為512位的Whirlpool算法i外,還支持摘要長度分別為256和384位的Whirlpool算法,分別記為wp512、wp256和wp384,其實現代碼為wp512.c
  • wp512.c - crypto/wp512.c - Linux source code (v5.15.11) - Bootlin

Tiger算法

  • Tiger算法是由Ross Anderson和Eli Biham于1996年提出的,號稱最快的摘要算法,并且專門為64位機器進行了性能優化。Tiger算法的摘要長度位192位。
  • 加密框架除支持標準的摘要長度為192位的Tiger算法外,還支持摘要長度截短為128位和160位的Tiger算法,分別記為tgr192、tgr128和tgr160,其實現代碼為tgr192.c。?
  • 未找到?

RIPEMD算法

  • RIPEMD(RACE Integrity Primitives Evaluation Message Digest)算法是Hans Dobbertin等3人在MD4、MD5算法基礎上于1996年提出的。RIPEMD算法支持128、160、256和320位共4種摘要長度。
  • 加密框架支持摘要長度為128、160、256和320位的RIPEMD算法,分別記為rmd128、rmd160、rmd256和rmd320,其實現源碼分別為rmd128.c、rmd160.c、rmd256.c和rmd320.c。
  • 只剩下 rmd160
  • rmd160.c - crypto/rmd160.c - Linux source code (v5.15.11) - Bootlin

CRC32算法

  • CRC(Cyclic Redundacy Checksum)是對數據的校驗值,中文為循環冗余校驗碼,常用于檢驗數據的完整性。
  • 加密框架支持的CRC算法是CRC32,即數據校驗值為32位,記為crc32c,其實現源碼為crc32c.c。
  • crc32c_generic.c - crypto/crc32c_generic.c - Linux source code (v5.15.11) - Bootlin

?GHASH函數

  • 在加密框架中,將定義在伽羅華(Galois)域(僅含有限多個元素的域)的泛散hash函數定義為獨立的算法,記為ghash,其實現源碼為ghash_generic.c。?
  • ghash-generic.c - crypto/ghash-generic.c - Linux source code (v5.15.11) - Bootlin

其他算法

?偽隨機生成算法

  • 偽隨機數生成算法(PRNG:Pseudo Random Number Generator)
    • a)符合ANSI標準的偽隨機數生成算法,記為stfrng,算法驅動名為ansi_cprng,實現源碼為ansi_cprng.c。
    • b)基于內核RNG的偽隨機數生成算法,也記為stdrng,但其算法驅動名為krng,實現源碼為krng.c。? ? 未找到
  • ansi_cprng.c - crypto/ansi_cprng.c - Linux source code (v5.15.11) - Bootlin
  • 注:在ansi_cprng.c中,還定義了一種符合FIPS(Federal Information Processing Standard,即聯邦信息處理標準)的偽隨機數生成算法,記為fips(ansi_cprng),但必須在宏開關CONFIG_CRYPTO__FIPS開啟時才有效。

壓縮算法

  • a)deflate算法,記為deflate,實現源碼為deflate.c。
    • deflate.c - crypto/deflate.c - Linux source code (v5.15.11) - Bootlin

  • b)lzo算法,記為lzo,實現源碼為lzo.c。
    • lzo.c - crypto/lzo.c - Linux source code (v5.15.11) - Bootlin

  • c)zlib算法,記為zlib,實現源碼為zlib.c? 未找到

NULL算法

  • 除上述常規算法外,加密框架還支持一種特殊的算法,即什么都不做的NULL算法。NULL算法的實現源碼為crypto_null.c,其中定義了名為digest_null、cipher_null和compress_null三種NULL算法,即NULL摘要算法、NULL加密算法和NULL壓縮算法
  • 在加密框架中,NULL算法主要用作復合算法的填充算法。例如,IPSEC中ESP協議在提供加密服務的同時還提供可選的認證服務,而Linux的IPSEC實現(即XFRM框架)將ESP協議的加密服務和可選的認證服務統一定義為認證加密(AEAD)服務。認證加密服務可以由一個認證加密算法實現也可以由一個認證算法和加密算法組成的復合算法實現。由于認證服務是可選的,當一個ESP協議對應的安全關聯SA未定義認證算法時說明未啟用認證服務,此時復合算法中的認證算法就是上面定義的NULL摘要算法。
  • crypto_null.c - crypto/crypto_null.c - Linux source code (v5.15.11) - Bootlin

參考鏈接

  • https://blog.csdn.net/weixin_43916535/category_10127981.html? ?加密框架專欄

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446112.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3.5.2安裝pygame_【閑來無事,py寫game】Mac-Python3.5安裝pygame 1.9.2 小計

13正文之前沒錯,我就是這么不學無術,C實在學的雞兒疼,所以干脆搞點娛樂措施,昨天趕上了京東圖書做大活動,所以屯了一批書,好久沒碰python了。所以就整本玩玩!今天這不就上手了么!自己…

Linux crypto相關知識的匯總 Linux加密框架crypto對稱算法和哈希算法加密模式

參考鏈接 Linux加密框架中的算法和算法模式(二)_家有一希的博客-CSDN博客 對稱算法 分組算法模式 ECB模式 ECB模式下,明文數據被分為大小合適的分組,然后對每個分組獨立進行加密或解密如下圖所示如果兩個明文塊相同&#xff0c…

物化視圖和視圖的最大區別_基于catalyst的物化視圖改寫引擎的實現

更新日志:1. 2020/06/16 group by 視圖的部分描述錯誤,已修正。什么是物化視圖我先用我的話解釋一下什么是物化視圖。假設我們已經有A,B兩張表,現在我創建了一張表C,C是由A,B兩張表經過一條SQL處理得到的,這個時候我們…

Linux加密框架中的算法和算法模式

參考鏈接 Linux加密框架中的算法和算法模式(三)_家有一希的博客-CSDN博客 對稱算法 14 如上所示,在arc4.c中定義了兩個與RC4算法相關的算法實現,分別為arc4和ecb(arc4),其中arc4是RC算法的算法實現,而ecb…

python學籍管理系統 flask_taskday05-Python之flask學習 web開發最基本的需要(特別詳細且適用)...

1.首先一個Flask的Web項目的創建需求一(文章概述):一:必須實現命令工具管理App,用于在命令行輸入命令對項目進行管理,對后期多多益善二:必須實現“藍圖”管理,用于將app啟動函數與路由分開管理,…

Linux加密框架crypto AES代碼相關

例子 aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.11) - Bootlin static struct crypto_alg aes_alg {.cra_name "aes",.cra_driver_name "aes-generic",.cra_priority 100,.cra_flags CRYPTO_ALG_TYPE_CIPHER,.cra_blocks…

python語言print函數_Python 的 print 函數

Python 2.x 系列已經停止維護了, python 3.x 系列正在成為主流,盡管有些項目還是python2.x 的,之后寫Python 代碼為了保持兼容性,還是盡量和Python 3 標準保持一致作為一個Python newbee 而言, python 2.x 和 3.x 的 …

Linux加密框架crypto crypto_alg|cipher_alg數據結構|AES例子

加密框架將算法的屬性抽象為算法說明數據結構struct crypto_alg,加密框架中的每一個算法(基礎算法和衍生算法)都表示為一個算法說明數據結構的實例,因此將struct crypto_alg稱為通用算法說明數據結構。后續章節中如無特殊說明&…

python如何運用ols_使用OLS回歸(Python,StatsModels,Pandas)預測未來值

我目前正試圖在Python中實現一個MLR,我不知道如何去應用我發現的未來值的系數。使用OLS回歸(Python,StatsModels,Pandas)預測未來值import pandas as pdimport statsmodels.formula.api as smimport statsmodels.api as sm2TV [230.1, 44.5,…

Linux加密框架 crypto RC4

參考鏈接 arc4.h Linux加密框架中的主要數據結構(一)_家有一希的博客-CSDN博客 頭文件 arc4.h - include/crypto/arc4.h - Linux source code (v5.15.11) - Bootlin實現代碼 arc4.c arc4.c - crypto/arc4.c - Linux source code (v5.15.11) - Bootlin…

python讀txt轉array_python將txt文件讀入為np.array的方法

原文件:7.8094,1.0804,5.7632,0.012269,0.008994,-0.003469,-0.79279,-0.064686,0.11635,0.68827,5.7169,7.9329,0.010264,0.003557,-0.011691,-0.57559,-0.56121,原文件數據比較多,是一個125行,45類float數字。代碼:# -*- coding…

Linux加密框架 crypto 哈希算法說明 同步哈希shash_alg | 異步哈希 ahash_alg | 通用部分抽象 hash_alg_common

參考鏈接 Linux加密框架中的主要數據結構(二)_家有一希的博客-CSDN博客 定義 通用算法說明數據結構crypto_alg的聯合體成員變量cra_u中包含多種算法的個性化屬性,如分組算法、塊加密算法、壓縮算法、偽隨機數算法等,但不包含哈希…

python 列表間隔取值_python list數據等間隔抽取并新建list存儲的例子

原始數據如下:[e3cd, e547, e63d, 0ffd, e39b, e539, e5be, 0dd2, e3d6, e52e, e5f8, 0000, e404, e52b, e63d, 0312, e38b]將其分割為4路數據,分別存儲在fetal1、fetal2、mother1、ECG的列表中,各列表對齊,不能整除于4的數據舍去…

Linux加密框架 crypto 哈希算法舉例 MD5

參考鏈接 Linux加密框架 crypto 哈希算法說明 同步哈希shash_alg | 異步哈希 ahash_alg | 通用部分抽象 hash_alg_common_CHYabc123456hh的博客-CSDN博客Linux加密框架中的主要數據結構(二)_家有一希的博客-CSDN博客 MD5 md5.h - include/crypto/md5.h …

事務沒提交的數據查的出來嗎?_“金三銀四”面試官:說說事務的ACID,什么是臟讀、幻讀?...

一、事務事務是數據庫管理系統執行過程中的一個邏輯單位,由一個有限的數據庫操作序列構成。--摘自百科在MySQL里,事務是在引擎層面實現,比如MyIsam不支持,InnoDB支持面試清單(Java崗):JavaJVM數…

Linux加密框架 crypto 算法模板

參考鏈接 Linux加密框架中的主要數據結構(三)_家有一希的博客-CSDN博客algapi.h - include/crypto/algapi.h - Linux source code (v5.15.11) - Bootlin 定義 struct crypto_template {struct list_head list;struct hlist_head instances;struct modu…

python找最長的字符串_為Python找到最長重復字符串的有效方法(從Pearls編程)

我的解決方案是基于后綴數組。它是由最長公共前綴的兩倍前綴構成的。最壞情況下的復雜度是O(n(logn)^2)。任務”伊利亞特.mb.txt“在我的筆記本上花了4秒鐘。代碼在函數suffix_array和longest_common_substring中有很好的文檔記錄。后一個函數很短,可以很容易地修改…

Linux加密框架 crypto 算法模板 CBC模板舉例

參考鏈接 Linux加密框架中的主要數據結構(三)_家有一希的博客-CSDN博客https://blog.csdn.net/CHYabc123456hh/article/details/122194754 CBC算法模板 cbc.c - crypto/cbc.c - Linux source code (v5.15.11) - BootlinCBC算法模板屬性 1)CBC算法模板名…

leetcode數組匯總_LeetCode刷題實戰43:字符串相乘

算法的重要性,我就不多說了吧,想去大廠,就必須要經過基礎知識和業務邏輯面試算法面試。所以,為了提高大家的算法能力,這個公眾號后續每天帶大家做一道算法題,題目就從LeetCode上面選 !今天和大家…

Linux加密框架 crypto 算法模板 HMAC模板舉例

參考鏈接 Linux加密框架中的主要數據結構(三)_家有一希的博客-CSDN博客Linux加密框架 crypto 算法模板_CHYabc123456hh的博客-CSDN博客 HMAC算法模板 hmac.c - crypto/hmac.c - Linux source code (v5.15.11) - Bootlinhmac.c - crypto/hmac.c - Linux…