導航:首頁 > 編程大全 > 密碼學bm演算法

密碼學bm演算法

發布時間:2022-12-25 14:23:44

A. 世界上的密碼

密碼學是研究編制密碼和破譯密碼的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通信秘密的,稱為編碼學;應用於破譯密碼以獲取通信情報的,稱為破譯學,總稱密碼學。

密碼是通信雙方按約定的法則進行信息特殊變換的一種重要保密手段。依照這些法則,變明文為密文,稱為加密變換;變密文為明文,稱為脫密變換。密碼在早期僅對文字或數碼進行加、脫密變換,隨著通信技術的發展,對語音、圖像、數據等都可實施加、脫密變換。

密碼學是在編碼與破譯的斗爭實踐中逐步發展起來的,並隨著先進科學技術的應用,已成為一門綜合性的尖端技術科學。它與語言學、數學、電子學、聲學、資訊理論、計算機科學等有著廣泛而密切的聯系。它的現實研究成果,特別是各國政府現用的密碼編制及破譯手段都具有高度的機密性。

進行明密變換的法則,稱為密碼的體制。指示這種變換的參數,稱為密鑰。它們是密碼編制的重要組成部分。密碼體制的基本類型可以分為四種:錯亂——按照規定的圖形和線路,改變明文字母或數碼等的位置成為密文;代替——用一個或多個代替表將明文字母或數碼等代替為密文;密本——用預先編定的字母或數字密碼組,代替一定的片語單詞等變明文為密文;加亂——用有限元素組成的一串序列作為亂數,按規定的演算法,同明文序列相結合變成密文。以上四種密碼體制,既可單獨使用,也可混合使用 ,以編制出各種復雜度很高的實用密碼。

20世紀70年代以來,一些學者提出了公開密鑰體制,即運用單向函數的數學原理,以實現加、脫密密鑰的分離。加密密鑰是公開的,脫密密鑰是保密的。這種新的密碼體制,引起了密碼學界的廣泛注意和探討。

利用文字和密碼的規律,在一定條件下,採取各種技術手段,通過對截取密文的分析,以求得明文,還原密碼編制,即破譯密碼。破譯不同強度的密碼,對條件的要求也不相同,甚至很不相同。

中國古代秘密通信的手段,已有一些近於密碼的雛形。宋曾公亮、丁度等編撰《武經總要》「字驗」記載,北宋前期,在作戰中曾用一首五言律詩的40個漢字,分別代表40種情況或要求,這種方式已具有了密本體制的特點。

1871年,由上海大北水線電報公司選用6899個漢字,代以四碼數字,成為中國最初的商用明碼本,同時也設計了由明碼本改編為密本及進行加亂的方法。在此基礎上,逐步發展為各種比較復雜的密碼。

在歐洲,公元前405年,斯巴達的將領來山得使用了原始的錯亂密碼;公元前一世紀,古羅馬皇帝凱撒曾使用有序的單表代替密碼;之後逐步發展為密本、多表代替及加亂等各種密碼體制。

二十世紀初,產生了最初的可以實用的機械式和電動式密碼機,同時出現了商業密碼機公司和市場。60年代後,電子密碼機得到較快的發展和廣泛的應用,使密碼的發展進入了一個新的階段。

密碼破譯是隨著密碼的使用而逐步產生和發展的。1412年,波斯人卡勒卡尚迪所編的網路全書中載有破譯簡單代替密碼的方法。到16世紀末期,歐洲一些國家設有專職的破譯人員,以破譯截獲的密信。密碼破譯技術有了相當的發展。1863年普魯士人卡西斯基所著《密碼和破譯技術》,以及1883年法國人克爾克霍夫所著《軍事密碼學》等著作,都對密碼學的理論和方法做過一些論述和探討。1949年美國人香農發表了《秘密體制的通信理論》一文,應用資訊理論的原理分析了密碼學中的一些基本問題。

自19世紀以來,由於電報特別是無線電報的廣泛使用,為密碼通信和第三者的截收都提供了極為有利的條件。通信保密和偵收破譯形成了一條斗爭十分激烈的隱蔽戰線。

1917年,英國破譯了德國外長齊默爾曼的電報,促成了美國對德宣戰。1942年,美國從破譯日本海軍密報中,獲悉日軍對中途島地區的作戰意圖和兵力部署,從而能以劣勢兵力擊破日本海軍的主力,扭轉了太平洋地區的戰局。在保衛英倫三島和其他許多著名的歷史事件中,密碼破譯的成功都起到了極其重要的作用,這些事例也從反面說明了密碼保密的重要地位和意義。

當今世界各主要國家的政府都十分重視密碼工作,有的設立龐大機構,撥出巨額經費,集中數以萬計的專家和科技人員,投入大量高速的電子計算機和其他先進設備進行工作。與此同時,各民間企業和學術界也對密碼日益重視,不少數學家、計算機學家和其他有關學科的專家也投身於密碼學的研究行列,更加速了密碼學的發展。

現在密碼已經成為單獨的學科,從傳統意義上來說,密碼學是研究如何把信息轉換成一種隱蔽的方式並阻止其他人得到它。
密碼學是一門跨學科科目,從很多領域衍生而來:它可以被看做是信息理論,卻使用了大量的數學領域的工具,眾所周知的如數論和有限數學。
原始的信息,也就是需要被密碼保護的信息,被稱為明文。加密是把原始信息轉換成不可讀形式,也就是密碼的過程。解密是加密的逆過程,從加密過的信息中得到原始信息。cipher是加密和解密時使用的演算法。
最早的隱寫術只需紙筆,現在稱為經典密碼學。其兩大類別為置換加密法,將字母的順序重新排列;替換加密法,將一組字母換成其他字母或符號。經典加密法的資訊易受統計的攻破,資料越多,破解就更容易,使用分析頻率就是好辦法。經典密碼學現在仍未消失,經常出現在智力游戲之中。在二十世紀早期,包括轉輪機在內的一些機械設備被發明出來用於加密,其中最著名的是用於第二次世界大戰的密碼機Enigma。這些機器產生的密碼相當大地增加了密碼分析的難度。比如針對Enigma各種各樣的攻擊,在付出了相當大的努力後才得以成功。

傳統密碼學

Autokey密碼
置換密碼
二字母組代替密碼 (by Charles Wheatstone)
多字母替換密碼
希爾密碼
維吉尼亞密碼
替換密碼
凱撒密碼
ROT13
仿射密碼
Atbash密碼
換位密碼
Scytale
Grille密碼
VIC密碼 (一種復雜的手工密碼,在五十年代早期被至少一名蘇聯間諜使用過,在當時是十分安全的)

對傳統密碼學的攻擊

頻率分析
重合指數

現代演算法,方法評估與選擇工程

標准機構

the Federal Information Processing Standards Publication program (run by NIST to proce standards in many areas to guide operations of the US Federal government; many FIPS Pubs are cryptography related, ongoing)
the ANSI standardization process (proces many standards in many areas; some are cryptography related, ongoing)
ISO standardization process (proces many standards in many areas; some are cryptography related, ongoing)
IEEE standardization process (proces many standards in many areas; some are cryptography related, ongoing)
IETF standardization process (proces many standards (called RFCs) in many areas; some are cryptography related, ongoing)
See Cryptography standards

加密組織

NSA internal evaluation/selections (surely extensive, nothing is publicly known of the process or its results for internal use; NSA is charged with assisting NIST in its cryptographic responsibilities)
GCHQ internal evaluation/selections (surely extensive, nothing is publicly known of the process or its results for GCHQ use; a division of GCHQ is charged with developing and recommending cryptographic standards for the UK government)
DSD Australian SIGINT agency - part of ECHELON
Communications Security Establishment (CSE) — Canadian intelligence agency.

公開的努力成果

the DES selection (NBS selection process, ended 1976)
the RIPE division of the RACE project (sponsored by the European Union, ended mid-'80s)
the AES competition (a 'break-off' sponsored by NIST; ended 2001)
the NESSIE Project (evaluation/selection program sponsored by the European Union; ended 2002)
the CRYPTREC program (Japanese government sponsored evaluation/recommendation project; draft recommendations published 2003)
the Internet Engineering Task Force (technical body responsible for Internet standards -- the Request for Comment series: ongoing)
the CrypTool project (eLearning programme in English and German; freeware; exhaustive ecational tool about cryptography and cryptanalysis)

加密散列函數 (消息摘要演算法,MD演算法)

加密散列函數
消息認證碼
Keyed-hash message authentication code
EMAC (NESSIE selection MAC)
HMAC (NESSIE selection MAC; ISO/IEC 9797-1, FIPS and IETF RFC)
TTMAC 也稱 Two-Track-MAC (NESSIE selection MAC; K.U.Leuven (Belgium) & debis AG (Germany))
UMAC (NESSIE selection MAC; Intel, UNevada Reno, IBM, Technion, & UCal Davis)
MD5 (系列消息摘要演算法之一,由MIT的Ron Rivest教授提出; 128位摘要)
SHA-1 (NSA開發的160位摘要,FIPS標准之一;第一個發行發行版本被發現有缺陷而被該版本代替; NIST/NSA 已經發布了幾個具有更長'摘要'長度的變種; CRYPTREC推薦 (limited))
SHA-256 (NESSIE 系列消息摘要演算法, FIPS標准之一180-2,摘要長度256位 CRYPTREC recommendation)
SHA-384 (NESSIE 列消息摘要演算法, FIPS標准之一180-2,摘要長度384位; CRYPTREC recommendation)
SHA-512 (NESSIE 列消息摘要演算法, FIPS標准之一180-2,摘要長度512位; CRYPTREC recommendation)
RIPEMD-160 (在歐洲為 RIPE 項目開發, 160位摘要;CRYPTREC 推薦 (limited))
Tiger (by Ross Anderson et al)
Snefru
Whirlpool (NESSIE selection hash function, Scopus Tecnologia S.A. (Brazil) & K.U.Leuven (Belgium))

公/私鑰加密演算法(也稱 非對稱性密鑰演算法)

ACE-KEM (NESSIE selection asymmetric encryption scheme; IBM Zurich Research)
ACE Encrypt
Chor-Rivest
Diffie-Hellman (key agreement; CRYPTREC 推薦)
El Gamal (離散對數)
ECC(橢圓曲線密碼演算法) (離散對數變種)
PSEC-KEM (NESSIE selection asymmetric encryption scheme; NTT (Japan); CRYPTREC recommendation only in DEM construction w/SEC1 parameters) )
ECIES (Elliptic Curve Integrated Encryption System; Certicom Corp)
ECIES-KEM
ECDH (橢圓曲線Diffie-Hellman 密鑰協議; CRYPTREC推薦)
EPOC
Merkle-Hellman (knapsack scheme)
McEliece
NTRUEncrypt
RSA (因數分解)
RSA-KEM (NESSIE selection asymmetric encryption scheme; ISO/IEC 18033-2 draft)
RSA-OAEP (CRYPTREC 推薦)
Rabin cryptosystem (因數分解)
Rabin-SAEP
HIME(R)
XTR

公/私鑰簽名演算法

DSA(zh:數字簽名;zh-tw:數位簽章演算法) (來自NSA,zh:數字簽名;zh-tw:數位簽章標准(DSS)的一部分; CRYPTREC 推薦)
Elliptic Curve DSA (NESSIE selection digital signature scheme; Certicom Corp); CRYPTREC recommendation as ANSI X9.62, SEC1)
Schnorr signatures
RSA簽名
RSA-PSS (NESSIE selection digital signature scheme; RSA Laboratories); CRYPTREC recommendation)
RSASSA-PKCS1 v1.5 (CRYPTREC recommendation)
Nyberg-Rueppel signatures
MQV protocol
Gennaro-Halevi-Rabin signature scheme
Cramer-Shoup signature scheme
One-time signatures
Lamport signature scheme
Bos-Chaum signature scheme
Undeniable signatures
Chaum-van Antwerpen signature scheme
Fail-stop signatures
Ong-Schnorr-Shamir signature scheme
Birational permutation scheme
ESIGN
ESIGN-D
ESIGN-R
Direct anonymous attestation
NTRUSign用於移動設備的公鑰加密演算法, 密鑰比較短小但也能達到高密鑰ECC的加密效果
SFLASH (NESSIE selection digital signature scheme (esp for smartcard applications and similar); Schlumberger (France))
Quartz

密碼鑒定

Key authentication
Public Key Infrastructure (PKI)
Identity-Based Cryptograph (IBC)
X.509
Public key certificate
Certificate authority
Certificate revocation list
ID-based cryptography
Certificate-based encryption
Secure key issuing cryptography
Certificateless cryptography

匿名認證系統

GPS (NESSIE selection anonymous identification scheme; Ecole Normale Supérieure, France Télécom, & La Poste)

秘密鑰演算法 (也稱 對稱性密鑰演算法)

流密碼
A5/1, A5/2 (GSM行動電話標准中指定的密碼標准)
BMGL
Chameleon
FISH (by Siemens AG)
二戰'Fish'密碼
Geheimfernschreiber (二戰時期Siemens AG的機械式一次一密密碼, 被布萊奇利(Bletchley)庄園稱為STURGEON)
Schlusselzusatz (二戰時期 Lorenz的機械式一次一密密碼, 被布萊奇利(Bletchley)庄園稱為[[tunny)
HELIX
ISAAC (作為偽隨機數發生器使用)
Leviathan (cipher)
LILI-128
MUG1 (CRYPTREC 推薦使用)
MULTI-S01 (CRYPTREC 推薦使用)
一次一密 (Vernam and Mauborgne, patented mid-'20s; an extreme stream cypher)
Panama
Pike (improvement on FISH by Ross Anderson)
RC4 (ARCFOUR) (one of a series by Prof Ron Rivest of MIT; CRYPTREC 推薦使用 (limited to 128-bit key))
CipherSaber (RC4 variant with 10 byte random IV, 易於實現)
SEAL
SNOW
SOBER
SOBER-t16
SOBER-t32
WAKE
分組密碼
分組密碼操作模式
乘積密碼
Feistel cipher (由Horst Feistel提出的分組密碼設計模式)
Advanced Encryption Standard (分組長度為128位; NIST selection for the AES, FIPS 197, 2001 -- by Joan Daemen and Vincent Rijmen; NESSIE selection; CRYPTREC 推薦使用)
Anubis (128-bit block)
BEAR (由流密碼和Hash函數構造的分組密碼, by Ross Anderson)
Blowfish (分組長度為128位; by Bruce Schneier, et al)
Camellia (分組長度為128位; NESSIE selection (NTT & Mitsubishi Electric); CRYPTREC 推薦使用)
CAST-128 (CAST5) (64 bit block; one of a series of algorithms by Carlisle Adams and Stafford Tavares, who are insistent (indeed, adamant) that the name is not e to their initials)
CAST-256 (CAST6) (128位分組長度; CAST-128的後繼者,AES的競爭者之一)
CIPHERUNICORN-A (分組長度為128位; CRYPTREC 推薦使用)
CIPHERUNICORN-E (64 bit block; CRYPTREC 推薦使用 (limited))
CMEA — 在美國行動電話中使用的密碼,被發現有弱點.
CS-Cipher (64位分組長度)
DESzh:數字;zh-tw:數位加密標准(64位分組長度; FIPS 46-3, 1976)
DEAL — 由DES演變來的一種AES候選演算法
DES-X 一種DES變種,增加了密鑰長度.
FEAL
GDES —一個DES派生,被設計用來提高加密速度.
Grand Cru (128位分組長度)
Hierocrypt-3 (128位分組長度; CRYPTREC 推薦使用))
Hierocrypt-L1 (64位分組長度; CRYPTREC 推薦使用 (limited))
International Data Encryption Algorithm (IDEA) (64位分組長度-- 蘇黎世ETH的James Massey & X Lai)
Iraqi Block Cipher (IBC)
KASUMI (64位分組長度; 基於MISTY1, 被用於下一代W-CDMA cellular phone 保密)
KHAZAD (64-bit block designed by Barretto and Rijmen)
Khufu and Khafre (64位分組密碼)
LION (由流密碼和Hash函數構造的分組密碼, by Ross Anderson)
LOKI89/91 (64位分組密碼)
LOKI97 (128位分組長度的密碼, AES候選者)
Lucifer (by Tuchman et al of IBM, early 1970s; modified by NSA/NBS and released as DES)
MAGENTA (AES 候選者)
Mars (AES finalist, by Don Coppersmith et al)
MISTY1 (NESSIE selection 64-bit block; Mitsubishi Electric (Japan); CRYPTREC 推薦使用 (limited))
MISTY2 (分組長度為128位: Mitsubishi Electric (Japan))
Nimbus (64位分組)
Noekeon (分組長度為128位)
NUSH (可變分組長度(64 - 256位))
Q (分組長度為128位)
RC2 64位分組,密鑰長度可變.
RC6 (可變分組長度; AES finalist, by Ron Rivest et al)
RC5 (by Ron Rivest)
SAFER (可變分組長度)
SC2000 (分組長度為128位; CRYPTREC 推薦使用)
Serpent (分組長度為128位; AES finalist by Ross Anderson, Eli Biham, Lars Knudsen)
SHACAL-1 (256-bit block)
SHACAL-2 (256-bit block cypher; NESSIE selection Gemplus (France))
Shark (grandfather of Rijndael/AES, by Daemen and Rijmen)
Square (father of Rijndael/AES, by Daemen and Rijmen)
3-Way (96 bit block by Joan Daemen)
TEA(小型加密演算法)(by David Wheeler & Roger Needham)
Triple DES (by Walter Tuchman, leader of the Lucifer design team -- not all triple uses of DES increase security, Tuchman's does; CRYPTREC 推薦使用 (limited), only when used as in FIPS Pub 46-3)
Twofish (分組長度為128位; AES finalist by Bruce Schneier, et al)
XTEA (by David Wheeler & Roger Needham)
多表代替密碼機密碼
Enigma (二戰德國轉輪密碼機--有很多變種,多數變種有很大的用戶網路)
紫密(Purple) (二戰日本外交最高等級密碼機;日本海軍設計)
SIGABA (二戰美國密碼機,由William Friedman, Frank Rowlett, 等人設計)
TypeX (二戰英國密碼機)
Hybrid code/cypher combinations
JN-25 (二戰日本海軍的高級密碼; 有很多變種)
Naval Cypher 3 (30年代和二戰時期英國皇家海軍的高級密碼)
可視密碼

有密級的 密碼 (美國)

EKMS NSA的電子密鑰管理系統
FNBDT NSA的加密窄帶話音標准
Fortezza encryption based on portable crypto token in PC Card format
KW-26 ROMULUS 電傳加密機(1960s - 1980s)
KY-57 VINSON 戰術電台語音加密
SINCGARS 密碼控制跳頻的戰術電台
STE 加密電話
STU-III 較老的加密電話
TEMPEST prevents compromising emanations
Type 1 procts

破譯密碼

被動攻擊
選擇明文攻擊
選擇密文攻擊
自適應選擇密文攻擊
暴力攻擊
密鑰長度
唯一解距離
密碼分析學
中間相會攻擊
差分密碼分析
線性密碼分析
Slide attack cryptanalysis
Algebraic cryptanalysis
XSL attack
Mod n cryptanalysis

弱密鑰和基於口令的密碼

暴力攻擊
字典攻擊
相關密鑰攻擊
Key derivation function
弱密鑰
口令
Password-authenticated key agreement
Passphrase
Salt

密鑰傳輸/交換

BAN Logic
Needham-Schroeder
Otway-Rees
Wide Mouth Frog
Diffie-Hellman
中間人攻擊

偽的和真的隨機數發生器

PRNG
CSPRNG
硬體隨機數發生器
Blum Blum Shub
Yarrow (by Schneier, et al)
Fortuna (by Schneier, et al)
ISAAC
基於SHA-1的偽隨機數發生器, in ANSI X9.42-2001 Annex C.1 (CRYPTREC example)
PRNG based on SHA-1 for general purposes in FIPS Pub 186-2 (inc change notice 1) Appendix 3.1 (CRYPTREC example)
PRNG based on SHA-1 for general purposes in FIPS Pub 186-2 (inc change notice 1) revised Appendix 3.1 (CRYPTREC example)

匿名通訊
Dining cryptographers protocol (by David Chaum)
匿名投遞
pseudonymity
匿名網路銀行業務
Onion Routing

法律問題

Cryptography as free speech
Bernstein v. United States
DeCSS
Phil Zimmermann
Export of cryptography
Key escrow and Clipper Chip
Digital Millennium Copyright Act
zh:數字版權管理;zh-tw:數位版權管理 (DRM)
Cryptography patents
RSA (now public domain}
David Chaum and digital cash
Cryptography and Law Enforcement
Wiretaps
Espionage
不同國家的密碼相關法律
Official Secrets Act (United Kingdom)
Regulation of Investigatory Powers Act 2000 (United Kingdom)

術語

加密金鑰
加密
密文
明文
加密法
Tabula recta

書籍和出版物

密碼學相關書籍
《密碼傳奇》,趙燕楓著,北京:科學出版社,2008年4月
密碼學領域重要出版物

密碼學家

參見List of cryptographers

密碼技術應用

Commitment schemes
Secure multiparty computations
電子投票
認證
數位簽名
Cryptographic engineering
Crypto systems

雜項

Echelon
Espionage
IACR
Ultra
Security engineering
SIGINT
Steganography
Cryptographers
安全套接字層(SSL)
量子密碼
Crypto-anarchism
Cypherpunk
Key escrow
零知識證明
Random oracle model
盲簽名
Blinding (cryptography)
數字時間戳
秘密共享
可信操作系統
Oracle (cryptography)

免費/開源的密碼系統(特指演算法+協議+體制設計)

PGP (a name for any of several related crypto systems, some of which, beginning with the acquisition of the name by Network Associates, have not been Free Software in the GNU sense)
FileCrypt (an open source/commercial command line version of PGP from Veridis of Denmark, see PGP)
GPG (an open source implementation of the OpenPGP IETF standard crypto system)
SSH (Secure SHell implementing cryptographically protected variants of several common Unix utilities, First developed as open source in Finland by Tatu Ylonen. There is now OpenSSH, an open source implementation supporting both SSH v1 and SSH v2 protocols. There are also commercial implementations.
IPsec (網際網路協議安全IETF標准,IPv6 IETF 標準的必須的組成部分)
Free S/WAN (IPsec的一種開源實現

B. bm是什麼意思呢

1、BM,韓國男女混聲團體KARD成員。在2017年7月19日以首張迷你專輯《HOLA HOLA》正式出道。

2、BM指絕對標高,也就是說與理論的黃海平面基準的高度。BM即Bench Mark(水準點)。

3、BM效應是指賬面市值比效應,指BM值較高的公司平均月收益率高於BM值較低的公司。

4、BM:在計算機科學里,Boyer-Moore字元串搜索演算法是一種非常高效的字元串搜索演算法。它由Bob Boyer和J Strother Moore設計於1977年。此演算法僅對搜索目標字元串(關鍵字)進行預處理,而非被搜索的字元串。

5、BM區是天文學專有名詞。來自中國天文學名詞審定委員會審定發布的天文學專有名詞中文譯名,詞條譯名和中英文解釋數據版權由天文學名詞委所有。

6、BM是七八十年代的一個演唱組合,代表作品為《Daddy Cool》。

C. BM是啥意思

1、BM(BM匹配演算法):BM演算法被認為是亞線性串匹配演算法,它在最壞情況下找到模式所有出現的時間復雜度為O(mn),在最好情況下執行匹配找到模式所有出現的時間復雜度為O(n/m)。

2、BM(Black Matrix)是指在玻璃、塑料、金屬或樹脂等材料上進行的電子印刷。我們現有的智能手機屏幕上周邊的有色部分就是BM的一種。

3、BM(絕對標高)BM指絕對標高,也就是說與理論的黃海平面基準的高度。BM即Bench Mark(水準點)。

4、BM(魔獸爭霸獸族英雄):魔獸爭霸人物獸族英雄劍聖簡稱。劍聖(BM)一個物理輸出英雄,主要的操作技巧是前期合理運用疾風步去別人家裡騷擾,主偷敵人英雄,可以造成敵方前期相當大的牽制。

5、BM(前西德的波尼M(BoneyM)演唱組)前西德的波尼M (Boney M)演唱組是七八十年代十分受人矚目的一個演唱組,樂隊成員來自四面八方,有的來自西印度群島,有的來自牙買加。製作人是弗朗可·菲林(Frank Fariam)。

D. 編寫函數,該函數能在一個字元串中查找某個子串,並返回該子串首字出現的下標位置。

/*
Sunday-字元串匹配演算法--一種優於KMP的演算法
思想類似於BM演算法,只不過是從左向右匹配
遇到不匹配的看大串中匹配范圍之外的右側第一個字元在小串中的最右位置
另外:採用BM/KMP的預處理的做法,事先計算好移動步長,等到遇到不匹配的值直接使用
*/
#include<iostream>
#include<cstdlib>
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<windows.h>
usingnamespacestd;
//一個字元8位最大256種
#defineMAX_CHAR_SIZE256/*設定每個字元最右移動步長,保存每個字元的移動步長
如果大串中匹配字元的右側一個字元沒在子串中,大串移動步長=整個串的距離+1
如果大串中匹配范圍內的右側一個字元在子串中,大串移動距離=子串長度-這個字元在子串中的位置
*/
int*setCharStep(char*subStr)
{
int*charStep=newint[MAX_CHAR_SIZE];
intsubStrLen=strlen(subStr);
for(inti=0;i<MAX_CHAR_SIZE;i++)
charStep[i]=subStrLen+1;
//從左向右掃描一遍保存子串中每個字元所需移動步長
for(inti=0;i<subStrLen;i++)
{
charStep[(unsignedchar)subStr[i]]=subStrLen-i;
}
returncharStep;
}
/*
演算法核心思想,從左向右匹配,遇到不匹配的看大串中匹配范圍之外的右側第一個字元在小串中的最右位置
根據事先計算好的移動步長移動大串指針,直到匹配
*/
intsundaySearch(char*mainStr,char*subStr,int*charStep)
{
intmainStrLen=strlen(mainStr);
intsubStrLen=strlen(subStr);
intmain_i=0;
intsub_j=0;
while(main_i<mainStrLen)
{
//保存大串每次開始匹配的起始位置,便於移動指針
inttem=main_i;
while(sub_j<subStrLen)
{
if(mainStr[main_i]==subStr[sub_j])
{
main_i++;
sub_j++;
continue;
}
else{
//如果匹配范圍外已經找不到右側第一個字元,則匹配失敗
if(tem+subStrLen>mainStrLen)
return-1;
//否則移動步長重新匹配
charfirstRightChar=mainStr[tem+subStrLen];
main_i=tem+charStep[(unsignedchar)firstRightChar];
sub_j=0;
break;//退出本次失敗匹配重新一輪匹配
}
}
if(sub_j==subStrLen)
returnmain_i-subStrLen;
}
return-1;
}
intmain()
{
unsigneStartTime=GetTickCount();
unsigneEndTime;
//隨機生成300位的二進制
inti,j,t,k;
charbins[1][300];//二維數組來存放
srand((int)time(0));//種子,防止隨機數據不變
for(i=0;i<1;i++){
for(j=0;j<300;j++){
bins[i][j]='0'+rand()%2;//放入隨機數
}
bins[i][j]=0;//字元串數組,所以最後一位''
}
char*mainStr=bins[0];
printf("字元串 %s ",bins[0]);
char*subStr="010101";//需要查找的子字元串
printf("需要查找的字元串 010101 ");
int*charStep=setCharStep(subStr);
cout<<"位置:"<<sundaySearch(mainStr,subStr,charStep)<<endl;
uEndTime=GetTickCount();
printf("%umselapsed. ",uEndTime-uStartTime);
system("pause");
return0;
}

E. 密碼學的歷史

在公元前,秘密書信已用於戰爭之中。西洋「史學之父」希羅多德(Herodotus)的《歷史》(The Histories)當中記載了一些最早的秘密書信故事。公元前5世紀,希臘城邦為對抗奴役和侵略,與波斯發生多次沖突和戰爭。

於公元前480年,波斯秘密集結了強大的軍隊,准備對雅典(Athens)和斯巴達(Sparta)發動一次突襲。希臘人狄馬拉圖斯在波斯的蘇薩城裡看到了這次集結,便利用了一層蠟把木板上的字遮蓋住,送往並告知了希臘人波斯的圖謀。最後,波斯海軍覆沒於雅典附近的沙拉米斯灣(Salamis Bay)。

由於古時多數人並不識字,最早的秘密書寫的形式只用到紙筆或等同物品,隨著識字率提高,就開始需要真正的密碼學了。最古典的兩個加密技巧是:

1、置換(Transposition cipher):將字母順序重新排列,例如『help me』變成『ehpl em』。

2、替代(substitution cipher):有系統地將一組字母換成其他字母或符號,例如『fly at once』變成『gmz bu podf』(每個字母用下一個字母取代)。

(5)密碼學bm演算法擴展閱讀:

進行明密變換的法則,稱為密碼的體制。指示這種變換的參數,稱為密鑰。它們是密碼編制的重要組成部分。密碼體制的基本類型可以分為四種:

1、錯亂——按照規定的圖形和線路,改變明文字母或數碼等的位置成為密文;

2、代替——用一個或多個代替表將明文字母或數碼等代替為密文;

3、密本——用預先編定的字母或數字密碼組,代替一定的片語單詞等變明文為密文;

4、加亂——用有限元素組成的一串序列作為亂數,按規定的演算法,同明文序列相結合變成密文。

以上四種密碼體制,既可單獨使用,也可混合使用 ,以編制出各種復雜度很高的實用密碼。

F. 那些經典演算法:AC自動機

第一次看到這個名字的時候覺得非常高級,深入學習就發現,AC就是一種多模式字元串匹配演算法。前面介紹的BF演算法,RK演算法,BM演算法,KMP演算法都屬於單模式匹配演算法,而Trie樹是多模式匹配演算法,多模式匹配演算法就是在一個主串中查找多個模式串,舉個最常用的例子,比如我們在論壇發表評論或發帖的時候,一般論壇後台會檢測我們發的內容是否有敏感詞,如果有敏感詞要麼是用***替換,要麼是不讓你發送,我們評論是通常是一段話,這些敏感詞可能成千上萬,如果用每個敏感詞都在評論的內容中查找,效率會非常低,AC自動機中,主串會與所有的模式串同時匹配,這時候就可以利用AC自動機這種多模式匹配演算法來完成高效的匹配,

AC自動機演算法是構造一個Trie樹,然後再添加額外的失配指針。這些額外的適配指針准許在查找字元串失敗的時候進行回退(例如在Trie樹種查找單詞bef失敗後,但是在Trie樹種存中bea這個單詞,失配指針會指向前綴be),轉向某些前綴分支,免於重復匹配前綴,提高演算法效率。
常見於IDS軟體或病毒檢測軟體中病毒特徵字元串,可以構建AC自動機,在這種情況下,演算法的時間復雜度為輸入字元串的長度和匹配數量之和。

假設現有模式字元串集合:{abd,abdk, abchijn, chnit, ijabdf, ijaij} 構建AC自動機如下:

說明:

1)當前指針curr指向AC自動機的根節點:curr=root。
2)從文本串中讀取(下)一個字元。
3)從當前節點的所有孩子節點中尋找與該字元匹配的節點:

4)若fail == null,則說明沒有任何子串為輸入字元串的前綴,這時設置curr = root,執行步驟2.
若fail != null,則將curr指向 fail節點,指向步驟3。
理解起來比較復雜,找網上的一個例子,假設文本串text = 「abchnijabdfk」。
查找過程如下:

說明如下:
1)按照字元串順序依次遍歷到:a-->b-->c-->h ,這時候發現文本串中下一個節點n和Trie樹中下一個節點i不匹配,且h的fail指針非空,跳轉到Trie樹中ch位置。
注意c-->h的時候判斷h不為結束節點,且c的fail指針也不是結束節點。
2)再接著遍歷n-->i,發現i節點在Trie樹中的下一個節點找不到j,且有fail指針,則繼續遍歷,
遍歷到d的時候要注意,d的下一個匹配節點f是結束字元,所以得到匹配字元串:ijabdf,且d的fail節點也是d,且也是結束字元,所以得到匹配字元串abd,不過不是失敗的匹配,所以curr不跳轉。

先將目標字元串插入到Trie樹種,然後通過廣度有限遍歷為每個節點的所有孩子節點找到正確的fail指針。
具體步驟如下:
1)將根節點的所有孩子節點的fail指針指向根節點,然後將根節點的所有孩子節點依次入隊列。
2)若隊列不為空:
2.1)出列一個字元,將出列的節點記為curr,failTo表示curr的
fail指針,即failTo = curr.fail 。
2.2) 判斷curr.child[i] == failTo.child[i]是不是成立:
成立:curr.child[i].fail = failTo.child[i]
因為當前字元串的後綴和Tire樹的前綴最長部分是到fail,
且子字元和failTo的下一個字元相同,則fail指針就是
failTo.child[i]。
不成立: 判斷failTo是不是為null是否成立:
成立: curr.child[i].fail = root = null。
不成立: failTo = failTo.fail 繼續2.2
curr.child[i]入列,再次執行步驟2)。
3)隊列為空結束。

每個結點的fail指向的解決順序是按照廣度有限遍歷的順序完成的,或者說層序遍歷的順序進行,我們根據父結點的fail指針來求當前節點的fail指針。

上圖為例,我們要解決y節點的fail指針問題,已經知道y節點的父節點x1的fail是指向x2的,根據fail指針的定義,我們知道紅色橢圓中的字元串序列肯定相等,而且是最長的公共部分。依據y.fail的含義,如果x2的某個孩子節點和節點y表示的表示的字元相等,y的fail就指向它。
如果x2的孩子節點中不存在節點y表示的字元。由於x2.fail指向x3,根據x2.fail的含義,我們知道綠色框中的字元序列是相同的。顯然如果x3的某個孩子和節點y表示字元相等,則y.fail就指向它。

如果x3的孩子節點不存在節點y表示的字元,我們重復這個步驟,直到xi的fail節點指向null,說明我們達到頂層,只要y.fail= root就可以了。
構造過程就是知道當前節點的最長公共前綴的情況下,去確定孩子節點的最長公共前綴。

下圖中,每個節點都有fail虛線,指向根節點的虛線沒畫出,求圖中c的孩子節點h的fail指向:

原圖中,深藍色的框出來的是已經確定fail指針的,求紅色框中h節點的fail指針。
這時候,我們看下h的父親節點c的fail指針指向,為ch中的c(這表示abc字元串的所有後綴bc和c和Trie樹的所有前綴中最長公共部分為c),且這個c節點的孩子節點中有字元為h的字元,所以圖中紅色框中框出的h節點的fail指針指向 ch字元串中的h。

求紅色框中i的fail指針指向,上圖中,我們可以看到i的父親節點h的指向為ch中的h,(也就是說我們的目標字元串結合中所有前綴和字元序列abch的所有後綴在Trie樹中最長前綴為ch。)我們比較i節點和ch中的h的所有子節點,發現h只有一個n的子節點,所以沒辦法匹配,那就繼續找ch中h的fail指針,圖中沒畫出,那麼就是它的fail指針就是root,然後去看root所有子節點中有沒有和i相等的,發現最右邊的i是和我們要找的i相等的,所以我們就把i的fail指針指向i,如後面的圖。

G. (近世代數)證明:M是R的極大理想,當且僅當R/M是單環。

陣列形式的零點定理 設R是一個QF環. 下述三個問題是非常重要的. 借鑒Hilbert Nullstellensatz定理的含義, 把它們總稱為陣列形式的零點問題.
問題A(弱零點問題):若I是R[X]的理想, 且I與R[X]不相等, 則是否存一個非全零陣列b, 使得 b是AnnM(I)中的元素 ? 問題B(零點問題):下述恆等式是否成立 I=AnnR[X](AnnM(I)) (1)
Macaulay 在名著[9]中著力研究的逆系(Inverse Systems)問題與問題A, B是密切相關的. 在證明(2)式時, 他採用了dialytic arrays方法. 然而,我們認為Macaulay的方法只適合於理想 是零維時的情形. D. G. Northcott(1974)[11]給出了公式(1)的完全證明.
問題C(強零點問題): 設R是QF環, 給定R[X]的一個多項式理想I, 是否存在一個由有限個LRA陣列生成的R[X]-子模M, 使得I=AnnR[X](M)
. 當R=F是域時, 問題C是多維線性系統理論中的一個重要研究課題. 這個問題實質上是問能否用有限個行為(behavior)數據確定整個系統. C. Heij(1992)得到了一些進展. 這個問題直到最近才由 S. Zampieri(1997)[13] 對F[X]=F[x,y]時給出了的肯定的解答. 我們發現Macaulay[9]有個論斷: 對R[X]的任意理想I, Ann(I)一定是有限生成R[X]-模. 如果利用Macaulay的這個論斷, 再利用Macaulay的公式(3),則問題C似乎可以輕松地解決. 然而, 經過細致地分析, 我們發現Macaulay的這個論斷是不對的, 他的證明只有當$I$是零維理想時才通得過. 那麼, 要使Macaulay的論斷成立, 是否一定要加上$I$是零維理想這個條件嗎? 本文將解決這個問題。
定理A (弱零點定理): 設R是QF環, I是 R[X] 的任意一個理想. 則AnnM(I)非零 當且僅當 I與R[X]不等。
定理B (零點定理): 設R是QF環, I是R[X]的任意一個理想. 則 I=Ann(Ann(I)) 定理C(強零點定理): 設R是QF環, I是R[X]的任意一個理想. 則存在M的一個有限生成R[X]-子模M, 使得I=AnnR[X](M).
問題D: 設 M是任意一個由有限個R上的LRA生成的M的R[X]-子模, 是否存在R[X]的一個理想I, 使得M=AnnM(I)? 當R是一個域時, Macaulay([9],p71)用 dialytic方法證明了這個『定理』. 然而,我們認為,這個證明也只能在 是有限生成R-模時才能通過. 實際上,我們將證明: 定理D: 設R是一個QF環, M是M的有限生成R[X]-子模, 則M是R[X]的某理想的零化陣列模, 當且僅當M是有限生成R-模. 定理E: 設R 是一個有限域,M=<a,…b> 是M的有限生成R[X]-子模, 其中a,…, b是陣列. 則存在R[X]的理想I使得M=Ann(I) 當且僅當每個LRS陣列a,b最終周期的(即:不計初始的有限項外是周期的).三、零化陣列模的結構與Nechaev問題

問題E: 設I是 R[X]的一個理想, 給出I恰是某個LRA陣列的特徵理想的判別准則, 即給出充要條件.
當n=1且R是一個唯一因子分解整環(簡記為UFD)時, 問題就不簡單.當n=1且R是一個有零因子的環時,問題更難以處理。當R為Potential整環時, 即要求R和R[[x]]都是UFD時, Fitzpatrick 和 Norton(1995)[7]證明R[x]中的理想I恰是一個LRS的特徵理想的充分必要條件是I是由一個首一多項式生成的主理想。我們要在R是一般的UFD上給出R上LRS的特徵理想的刻畫。 問題F:設R是QF環, 給定R[X]的一個理想I. 問在什麼條件下,AnnM(I)是一個循環R[X]-模. 我們得到下面簡明的解析判別公式。 定理F:設F是一個域,F[X]的零維理想I是F上一個LRA陣列的特徵理想,當且僅當
dimF (I:rad(I))/I =dimR F[X]/rad(I).
上述判別公式中的數值是容易用Grobner基理論中常規的演算法計算, 所有這些計算須對I進行准素分解.
當R是Artin局部主理想環且$I$是准素理想時, Nechaev[10]給出了Ann(I)恰是一個R上的一個LRS生成的循環模的判別准則, 該判別需用到對I的准素分解。他在該文中提出了如下三個未解決的問題. Nechaev公開問題1: 設R是局部Artin主理想環, I 是R[x]的理想, 給出一個判別零化序列模Ann(I)是循環R[x]-模的准則, 且要求該判別只與理想I(或I的生成元)有關, 而不依賴於I的准素分解的. Nechaev公開問題2: 當R是任意QF環時, 對R[x]的任意一個理想I,建立規范生成系(簡記CGS)(Canonical Generator System)的概念, 以便能夠方便地判別理想I的代表元的歸屬問題, 即:對任意f(x) in R[x], 能否有演算法方便地判別f(x) in I與否. Nechaev公開問題3:} 在Nechaev問題2相同的條件下, 給出構造性的方法求出R[x]-模Ann(I)的生成元系並進一步給出循環性的判別. 我們利用定理F的結果和方法,解決了Nechaev公開問題1。上述三個Nechaev問題中,真正有實在意義和難度的是Nechaev問題1。因為, 我們證明了 定理G: Nechaev的CGS恰是極小Grobner 基.
因此, 只要QF環R擁有如下兩個附加條件:
a. R中的元素能夠用計算機可接受的形式表示出,
b. 能用計算機實現「+", 「x"運算和求解系數在R上線性方程.
則我們可以藉助環上的Grobner基理論, 解決Nechaev問題2, 並用解決Nechaev問題1的同樣方法解決Nechaev問題3.
四、理想的零化陣列模的基構造
當R是有限域, R[X]=R[x,y]是兩個變元的多項式環時, 文獻[8]通過刻劃I的約化Grobner基的標准型, 給出了類似於(2)式中一維LRS的基的具有漂亮組合性質的二維LRA基.
我們採用與[8]中不同的方法, 對任意n和任意零維理想I, 求出Ann(I)的生成元組. 我們的工作是基於Grobner基理論和一些基本的同調代數知識. 實際上, 我們利用如下的對偶定理。
定理H: 設I是R[X]的任意理想, 則Ann(I)與Hom(R[X]/I,R) 是R[X]-模同構

五、Galois環上的陣列

八十年代以來, Nechaev[10], Kurakin, Kuzmin等對環上的LRS和LRA作了大量的研究. 有關的綜述報告參見Mikhalev & Nechaev(1996) [15]. 進入九十年代, 由於Calderbank等[6]關於Galois環上的代數編碼理論的突破性進展, 由於剩餘類環Z/(m)環上的編碼成功地應用於編碼與調制相結合體制, 因而Galois環上的編碼問題,在國際資訊理論學術界引起了極大的興趣和研究熱潮.
A. A. Nechaev 的論文[10]是研究交換環上LRS的一篇重要文獻. 該文主要做了兩項工作. 1). 在R上線性遞歸序列的有限生成子模格與單變元多項式環R[x]中的首一理想格之間建立了Galois對應. 2). 在更特殊的Artin主理想環上, 對R[x]中的理想I, 給出I的零化線性遞歸序列R-模Ann_R(I)是循環R[x]-模的判別准則. 應該注意的是, [10]中給出的循環模的判別准則是基於構造Ann(I)的R-模生成元組, 然後根據這些生成元之間的復雜關系, 給出Ann(I)是循環R[x]-模的判別准則, 而且他的判別准則涉及到對理想的准素分解. 求對多項式理想的准素分解的演算法一直是一個困難的問題, 盡管可以用Grobner 理論給予解決, 但是這些演算法依然是很復雜的.

六、 LRA的綜合問題
如何有效地求解綜合問題一直是資訊理論, 系統論, 控制論和密碼學等許多學科中活躍的重要研究課題. 域上有限序列最小特徵多項式的綜合問題是由Berlekamp(1968)[17]和Massey(1969)解決的. 他們給出的著名的B-M演算法已成為工業標准. B-M演算法的計算復雜性是O(m2), 其中 是序列的長度. 而用常規的解線性方程組的方法的復雜性是O(m3). BM演算法解決KeyEquation的求解。
在R=Z/(m)剩餘類環, 且n=1時, Reed 和 Sloane(1985)[12]給出了BM演算法的推廣. KeyEquation缺乏代數的結構性. 作者(1993)[3]提出用齊次關鍵方程HKeyEquation代替KeyEquation的新方法, 這樣不但有極好的代數結構性質, 具有更廣的適用性. 我們已證明, 求KeyEquation的解與求HKeyEquation的解是等價的[3]. HKeyEquation容易推廣到對LRA的綜合, 且可以用於代數幾何碼的解碼. 基於我們齊次化方法的同樣思路, 周錦君等(1996)[14]將HKeyEquation推廣用於求解剩餘類環上的陣列的綜合. 最近, J. Althaler & A. Dur (1996)[5]也開始使用齊次化方法研究序列的綜合,但他們用逆冪級數表示序列,而相應的特徵多項式是常規的多項式, 因此序列和特徵多項式不在同一個環中,無法直接利用Grobner基理論和Syzygy的計算。 實際上,他們給出的綜合演算法必須要藉助已有疊代演算法. 通過齊次化方法, 我們(1993[3])已證明LRA的綜合演算法與Grobner基有很好的聯系. 本文將進一步揭示綜合演算法的每一步與Grobner基有精密聯系.

七、 主要結果

我們簡要列舉本文得到的主要新結果.
設R是局部Artin主理想環(或更廣的Quasi-Frobeniou環), 是R的極大理想, F=R/m是域, R[X]多元多項式環, I,J 是R[X]的任意理想. M,N是R上的某些陣列構成的R[X]-模. 則:
1. (弱零點定理):Ann(I)=0當且僅當I=R[X].
2. (零點定理): Ann(Ann(I))=I.
3. (強零點定理):存在有限個陣列生成的R[X]-模M, 使得 I=Ann(M).
4. Ann(I)是有限個陣列生成的R[X]-模, 當且僅當, I是零維理想, 當且僅當
Ann(I)是有限個陣列生成的R-模.
5. 有限個陣列生成的R[X]-模M是R[X]的某理想的零化陣列模當且僅當M 是有限生成R-
模.當R是域, I 是R[X]的零維理想. 則存在陣列a使得I=Ann(a) 當且僅當
dimF (I:rad(I))/I =dimR F[X]/rad(I).
6. 解決Nechaev 的3個Open問題
7. Ann(Ann(M))=M 當且僅當M是有限生成R-模. 這樣既推廣了Macaulay的逆系定理, 又指出Macaulay的原逆系定理的不確切之處, 並給出了逆系定理成立的充要條件.
8. 當R是主理想局部環時, 給出R[x]的理想I的Grobner基的標准型, 和計算I的Grobner基的快速演算法, 並給出對I准素分解的基於Grobner基理論的演算法.
9. 給出陣列的代數表示和計算Ann(I) 的 R-模基的新方法.
10. 揭示序列綜合的Belerkamp-Massey 與Grobner 基之間的緊密聯系
11. 當R是UFD, I是R[x]的理想. 則I是某個LRS序列的特徵理想當且僅當I是由首一多項式生成的主理想. 從而推廣了Fitzpatrick 的結果.

H. 密碼學的學科分類

Autokey密碼
置換密碼
二字母組代替密碼 (by Charles Wheatstone)
多字母替換密碼
希爾密碼
維吉尼亞密碼
替換式密碼
凱撒密碼
摩爾斯電碼
ROT13
仿射密碼
Atbash密碼
換位密碼
Scytale
Grille密碼
VIC密碼 (一種復雜的手工密碼,在五十年代早期被至少一名蘇聯間諜使用過,在當時是十分安全的)
流密碼
LFSR流密碼
EIGamal密碼
RSA密碼
對傳統密碼學的攻擊
頻率分析
重合指數
經典密碼學
在近代以前,密碼學只考慮到信息的機密性(confidentiality):如何將可理解的信息轉換成難以理解的信息,並且使得有秘密信息的人能夠逆向回復,但缺乏秘密信息的攔截者或竊聽者則無法解讀。近數十年來,這個領域已經擴展到涵蓋身分認證(或稱鑒權)、信息完整性檢查、數字簽名、互動證明、安全多方計算等各類技術。
古中國周朝兵書《六韜.龍韜》也記載了密碼學的運用,其中的《陰符》和《陰書》便記載了周武王問姜子牙關於征戰時與主將通訊的方式: 太公曰:「主與將,有陰符,凡八等。有大勝克敵之符,長一尺。破軍擒將之符,長九寸。降城得邑之符,長八寸。卻敵報遠之符,長七寸。警眾堅守之符,長六寸。請糧益兵之符,長五寸。敗軍亡將之符,長四寸。失利亡士之符,長三寸。諸奉使行符,稽留,若符事聞,泄告者,皆誅之。八符者,主將秘聞,所以陰通言語,不泄中外相知之術。敵雖聖智,莫之能識。」
武王問太公曰:「… 符不能明;相去遼遠,言語不通。為之奈何?」
太公曰:「諸有陰事大慮,當用書,不用符。主以書遺將,將以書問主。書皆一合而再離,三發而一知。再離者,分書為三部。三發而一知者,言三人,人操一分,相參而不相知情也。此謂陰書。敵雖聖智,莫之能識。」 陰符是以八等長度的符來表達不同的消息和指令,可算是密碼學中的替代法(en:substitution),把信息轉變成敵人看不懂的符號。至於陰書則運用了移位法,把書一分為三,分三人傳遞,要把三份書重新拼合才能獲得還原的信息。
除了應用於軍事外,公元四世紀婆羅門學者伐蹉衍那(en:Vatsyayana) 所書的《欲經》4 中曾提及到用代替法加密信息。書中第45項是秘密書信(en:mlecchita-vikalpa) ,用以幫助婦女隱瞞她們與愛郞之間的關系。其中一種方法是把字母隨意配對互換,如套用在羅馬字母中,可有得出下表: A B C D E F G H I J K L M Z Y X W V U T S R Q P O N 由經典加密法產生的密碼文很容易泄漏關於明文的統計信息,以現代觀點其實很容易被破解。阿拉伯人津帝(en:al-Kindi)便提及到如果要破解加密信息,可在一篇至少一頁長的文章中數算出每個字母出現的頻率,在加密信件中也數算出每個符號的頻率,然後互相對換,這是頻率分析的前身,此後幾乎所有此類的密碼都馬上被破解。但經典密碼學仍未消失,經常出現在謎語之中(見en:cryptogram)。這種分析法除了被用在破解密碼法外,也常用於考古學上。在破解古埃及象形文字(en:Hieroglyphs)時便運用了這種解密法。 標准機構
the Federal Information Processing Standards Publication program (run by NIST to proce standards in many areas to guide operations of the US Federal government; many FIPS Pubs are cryptography related,ongoing)
the ANSI standardization process (proces many standards in many areas; some are cryptography related,ongoing)
ISO standardization process (proces many standards in many areas; some are cryptography related,ongoing)
IEEE standardization process (proces many standards in many areas; some are cryptography related,ongoing)
IETF standardization process (proces many standards (called RFCs) in many areas; some are cryptography related,ongoing)
See Cryptography standards
加密組織
NSA internal evaluation/selections (surely extensive,nothing is publicly known of the process or its results for internal use; NSA is charged with assisting NIST in its cryptographic responsibilities)
GCHQ internal evaluation/selections (surely extensive,nothing is publicly known of the process or its results for GCHQ use; a division of GCHQ is charged with developing and recommending cryptographic standards for the UK government)
DSD Australian SIGINT agency - part of ECHELON
Communications Security Establishment (CSE) - Canadian intelligence agency.
努力成果
the DES selection (NBS selection process,ended 1976)
the RIPE division of the RACE project (sponsored by the European Union,ended mid-'80s)
the AES competition (a 'break-off' sponsored by NIST; ended 2001)
the NESSIE Project (evaluation/selection program sponsored by the European Union; ended 2002)
the CRYPTREC program (Japanese government sponsored evaluation/recommendation project; draft recommendations published 2003)
the Internet Engineering Task Force (technical body responsible for Internet standards -- the Request for Comment series: ongoing)
the CrypTool project (eLearning programme in English and German; freeware; exhaustive ecational tool about cryptography and cryptanalysis)
加密散列函數 (消息摘要演算法,MD演算法)
加密散列函數
消息認證碼
Keyed-hash message authentication code
EMAC (NESSIE selection MAC)
HMAC (NESSIE selection MAC; ISO/IEC 9797-1,FIPS and IETF RFC)
TTMAC 也稱 Two-Track-MAC (NESSIE selection MAC; K.U.Leuven (Belgium) & debis AG (Germany))
UMAC (NESSIE selection MAC; Intel,UNevada Reno,IBM,Technion,& UCal Davis)
MD5 (系列消息摘要演算法之一,由MIT的Ron Rivest教授提出; 128位摘要)
SHA-1 (NSA開發的160位摘要,FIPS標准之一;第一個發行發行版本被發現有缺陷而被該版本代替; NIST/NSA 已經發布了幾個具有更長'摘要'長度的變種; CRYPTREC推薦 (limited))
SHA-256 (NESSIE 系列消息摘要演算法,FIPS標准之一180-2,摘要長度256位 CRYPTREC recommendation)
SHA-384 (NESSIE 列消息摘要演算法,FIPS標准之一180-2,摘要長度384位; CRYPTREC recommendation)
SHA-512 (NESSIE 列消息摘要演算法,FIPS標准之一180-2,摘要長度512位; CRYPTREC recommendation)
RIPEMD-160 (在歐洲為 RIPE 項目開發,160位摘要;CRYPTREC 推薦 (limited))
Tiger (by Ross Anderson et al)
Snefru
Whirlpool (NESSIE selection hash function,Scopus Tecnologia S.A. (Brazil) & K.U.Leuven (Belgium))
公/私鑰加密演算法(也稱 非對稱性密鑰演算法)
ACE-KEM (NESSIE selection asymmetric encryption scheme; IBM Zurich Research)
ACE Encrypt
Chor-Rivest
Diffie-Hellman(key agreement; CRYPTREC 推薦)
El Gamal (離散對數)
ECC(橢圓曲線密碼演算法) (離散對數變種)
PSEC-KEM (NESSIE selection asymmetric encryption scheme; NTT (Japan); CRYPTREC recommendation only in DEM construction w/SEC1 parameters) )
ECIES (Elliptic Curve Integrated Encryption System; Certicom Corp)
ECIES-KEM
ECDH (橢圓曲線Diffie-Hellman 密鑰協議; CRYPTREC推薦)
EPOC
Merkle-Hellman (knapsack scheme)
McEliece
NTRUEncrypt
RSA (因數分解)
RSA-KEM (NESSIE selection asymmetric encryption scheme; ISO/IEC 18033-2 draft)
RSA-OAEP (CRYPTREC 推薦)
Rabin cryptosystem (因數分解)
Rabin-SAEP
HIME(R)
XTR
公/私鑰簽名演算法
DSA(zh:數字簽名;zh-tw:數位簽章演算法) (來自NSA,zh:數字簽名;zh-tw:數位簽章標准(DSS)的一部分; CRYPTREC 推薦)
Elliptic Curve DSA (NESSIE selection digital signature scheme; Certicom Corp); CRYPTREC recommendation as ANSI X9.62,SEC1)
Schnorr signatures
RSA簽名
RSA-PSS (NESSIE selection digital signature scheme; RSA Laboratories); CRYPTREC recommendation)
RSASSA-PKCS1 v1.5 (CRYPTREC recommendation)
Nyberg-Rueppel signatures
MQV protocol
Gennaro-Halevi-Rabin signature scheme
Cramer-Shoup signature scheme
One-time signatures
Lamport signature scheme
Bos-Chaum signature scheme
Undeniable signatures
Chaum-van Antwerpen signature scheme
Fail-stop signatures
Ong-Schnorr-Shamir signature scheme
Birational permutation scheme
ESIGN
ESIGN-D
ESIGN-R
Direct anonymous attestation
NTRUSign用於移動設備的公鑰加密演算法,密鑰比較短小但也能達到高密鑰ECC的加密效果
SFLASH (NESSIE selection digital signature scheme (esp for smartcard applications and similar); Schlumberger (France))
Quartz
秘密鑰演算法 (也稱 對稱性密鑰演算法)
流密碼
A5/1,A5/2 (GSM行動電話標准中指定的密碼標准)
BMGL
Chameleon
FISH (by Siemens AG)
二戰'Fish'密碼
Geheimfernschreiber (二戰時期Siemens AG的機械式一次一密密碼,被布萊奇利(Bletchley)庄園稱為STURGEON)
Schlusselzusatz (二戰時期 Lorenz的機械式一次一密密碼,被布萊奇利(Bletchley)庄園稱為[[tunny)
HELIX
ISAAC (作為偽隨機數發生器使用)
Leviathan (cipher)
LILI-128
MUG1 (CRYPTREC 推薦使用)
MULTI-S01 (CRYPTREC 推薦使用)
一次一密 (Vernam and Mauborgne,patented mid-'20s; an extreme stream cypher)
Panama
Pike (improvement on FISH by Ross Anderson)
RC4 (ARCFOUR) (one of a series by Prof Ron Rivest of MIT; CRYPTREC 推薦使用 (limited to 128-bit key))
CipherSaber (RC4 variant with 10 byte random IV,易於實現)
SEAL
SNOW
SOBER
SOBER-t16
SOBER-t32
WAKE
分組密碼
分組密碼操作模式
乘積密碼
Feistel cipher (由Horst Feistel提出的分組密碼設計模式)
Advanced Encryption Standard (分組長度為128位; NIST selection for the AES,FIPS 197,2001 -- by Joan Daemen and Vincent Rijmen; NESSIE selection; CRYPTREC 推薦使用)
Anubis (128-bit block)
BEAR (由流密碼和Hash函數構造的分組密碼,by Ross Anderson)
Blowfish (分組長度為128位; by Bruce Schneier,et al)
Camellia (分組長度為128位; NESSIE selection (NTT & Mitsubishi Electric); CRYPTREC 推薦使用)
CAST-128 (CAST5) (64 bit block; one of a series of algorithms by Carlisle Adams and Stafford Tavares,who are insistent (indeed,adamant) that the name is not e to their initials)
CAST-256 (CAST6) (128位分組長度; CAST-128的後繼者,AES的競爭者之一)
CIPHERUNICORN-A (分組長度為128位; CRYPTREC 推薦使用)
CIPHERUNICORN-E (64 bit block; CRYPTREC 推薦使用 (limited))
CMEA - 在美國行動電話中使用的密碼,被發現有弱點.
CS-Cipher (64位分組長度)
DESzh:數字;zh-tw:數位加密標准(64位分組長度; FIPS 46-3,1976)
DEAL - 由DES演變來的一種AES候選演算法
DES-X 一種DES變種,增加了密鑰長度.
FEAL
GDES -一個DES派生,被設計用來提高加密速度.
Grand Cru (128位分組長度)
Hierocrypt-3 (128位分組長度; CRYPTREC 推薦使用))
Hierocrypt-L1 (64位分組長度; CRYPTREC 推薦使用 (limited))
International Data Encryption Algorithm (IDEA) (64位分組長度--蘇黎世ETH的James Massey & X Lai)
Iraqi Block Cipher (IBC)
KASUMI (64位分組長度; 基於MISTY1,被用於下一代W-CDMAcellular phone 保密)
KHAZAD (64-bit block designed by Barretto and Rijmen)
Khufu and Khafre (64位分組密碼)
LOKI89/91 (64位分組密碼)
LOKI97 (128位分組長度的密碼,AES候選者)
Lucifer (by Tuchman et al of IBM,early 1970s; modified by NSA/NBS and released as DES)
MAGENTA (AES 候選者)
Mars (AES finalist,by Don Coppersmith et al)
MISTY1 (NESSIE selection 64-bit block; Mitsubishi Electric (Japan); CRYPTREC 推薦使用 (limited))
MISTY2 (分組長度為128位:Mitsubishi Electric (Japan))
Nimbus (64位分組)
Noekeon (分組長度為128位)
NUSH (可變分組長度(64 - 256位))
Q (分組長度為128位)
RC2 64位分組,密鑰長度可變.
RC6 (可變分組長度; AES finalist,by Ron Rivest et al)
RC5 (by Ron Rivest)
SAFER (可變分組長度)
SC2000 (分組長度為128位; CRYPTREC 推薦使用)
Serpent (分組長度為128位; AES finalist by Ross Anderson,Eli Biham,Lars Knudsen)
SHACAL-1 (256-bit block)
SHACAL-2 (256-bit block cypher; NESSIE selection Gemplus (France))
Shark (grandfather of Rijndael/AES,by Daemen and Rijmen)
Square (father of Rijndael/AES,by Daemen and Rijmen)
3-Way (96 bit block by Joan Daemen)
TEA(小型加密演算法)(by David Wheeler & Roger Needham)
Triple DES (by Walter Tuchman,leader of the Lucifer design team -- not all triple uses of DES increase security,Tuchman's does; CRYPTREC 推薦使用 (limited),only when used as in FIPS Pub 46-3)
Twofish (分組長度為128位; AES finalist by Bruce Schneier,et al)
XTEA (by David Wheeler & Roger Needham)
多表代替密碼機密碼
Enigma (二戰德國轉輪密碼機--有很多變種,多數變種有很大的用戶網路)
紫密(Purple) (二戰日本外交最高等級密碼機;日本海軍設計)
SIGABA (二戰美國密碼機,由William Friedman,Frank Rowlett,等人設計)
TypeX (二戰英國密碼機)
Hybrid code/cypher combinations
JN-25 (二戰日本海軍的高級密碼; 有很多變種)
Naval Cypher 3 (30年代和二戰時期英國皇家海軍的高級密碼)
可視密碼
有密級的 密碼 (美國)
EKMS NSA的電子密鑰管理系統
FNBDT NSA的加密窄帶話音標准
Fortezza encryption based on portable crypto token in PC Card format
KW-26 ROMULUS 電傳加密機(1960s - 1980s)
KY-57 VINSON 戰術電台語音加密
SINCGARS 密碼控制跳頻的戰術電台
STE 加密電話
STU-III 較老的加密電話
TEMPEST prevents compromising emanations
Type 1 procts
雖然頻率分析是很有效的技巧,實際上加密法通常還是有用的。不使用頻率分析來破解一個信息需要知道是使用何種加密法,因此才會促成了諜報、賄賂、竊盜或背叛等行為。直到十九世紀學者們才體認到加密法的演算法並非理智或實在的防護。實際上,適當的密碼學機制(包含加解密法)應該保持安全,即使敵人知道了使用何種演算法。對好的加密法來說,鑰匙的秘密性理應足以保障資料的機密性。這個原則首先由奧古斯特·柯克霍夫(Auguste Kerckhoffs)提出並被稱為柯克霍夫原則(Kerckhoffs' principle)。資訊理論始祖克勞德·艾爾伍德·香農(Claude Shannon)重述:「敵人知道系統。」
大量的公開學術研究出現,是現代的事,這起源於一九七零年代中期,美國國家標准局(National Bureau of Standards,NBS;現稱國家標准技術研究所,National|Institute of Standards and Technology,NIST)制定數字加密標准(DES),Diffie和Hellman提出的開創性論文,以及公開釋出RSA。從那個時期開始,密碼學成為通訊、電腦網路、電腦安全等上的重要工具。許多現代的密碼技術的基礎依賴於特定基算問題的困難度,例如因子分解問題或是離散對數問題。許多密碼技術可被證明為只要特定的計算問題無法被有效的解出,那就安全。除了一個著名的例外:一次墊(one-time pad,OTP),這類證明是偶然的而非決定性的,但是是目前可用的最好的方式。
密碼學演算法與系統設計者不但要留意密碼學歷史,而且必須考慮到未來發展。例如,持續增加計算機處理速度會增進暴力攻擊法(brute-force attacks)的速度。量子計算的潛在效應已經是部份密碼學家的焦點。
二十世紀早期的密碼學本質上主要考慮語言學上的模式。從此之後重心轉移,數論。密碼學同時也是工程學的分支,但卻是與別不同,因為它必須面對有智能且惡意的對手,大部分其他的工程僅需處理無惡意的自然力量。檢視密碼學問題與量子物理間的關連也是熱門的研究。
現代密碼學大致可被區分為數個領域。對稱鑰匙密碼學指的是傳送方與接收方都擁有相同的鑰匙。直到1976年這都還是唯一的公開加密法。
現代的研究主要在分組密碼(block cipher)與流密碼(stream cipher)及其應用。分組密碼在某種意義上是阿伯提的多字元加密法的現代化。分組密碼取用明文的一個區塊和鑰匙,輸出相同大小的密文區塊。由於信息通常比單一區塊還長,因此有了各種方式將連續的區塊編織在一起。DES和AES是美國聯邦政府核定的分組密碼標准(AES將取代DES)。盡管將從標准上廢除,DES依然很流行(3DES變形仍然相當安全),被使用在非常多的應用上,從自動交易機、電子郵件到遠端存取。也有許多其他的區塊加密被發明、釋出,品質與應用上各有不同,其中不乏被破解者。
流密碼,相對於區塊加密,製造一段任意長的鑰匙原料,與明文依位元或字元結合,有點類似一次一密密碼本(one-time pad)。輸出的串流根據加密時的內部狀態而定。在一些流密碼上由鑰匙控制狀態的變化。RC4是相當有名的流密碼。
密碼雜湊函數(有時稱作消息摘要函數,雜湊函數又稱散列函數或哈希函數)不一定使用到鑰匙,但和許多重要的密碼演算法相關。它將輸入資料(通常是一整份文件)輸出成較短的固定長度雜湊值,這個過程是單向的,逆向操作難以完成,而且碰撞(兩個不同的輸入產生相同的雜湊值)發生的機率非常小。
信息認證碼或押碼(Message authentication codes,MACs)很類似密碼雜湊函數,除了接收方額外使用秘密鑰匙來認證雜湊值。

I. 受限玻爾茲曼機的介紹

RBM是玻爾茲曼機(Boltzmann machine,BM)的一種特殊拓撲結構。BM的原理起源於統計物理學,是一種基於能量函數的建模方法,能夠描述變數之間的高階相互作用,BM的學習演算法較復雜,但所建模型和學習演算法有比較完備的物理解釋和嚴格的數理統計理論作基礎。BM是一種對稱耦合的隨機反饋型二值單元神經網路,由可見層和多個隱層組成,網路節點分為可見單元(visible unit)和隱單元(hidden unit),用可見單元和隱單元來表達隨機網路與隨機環境的學習模型,通過權值表達單元之間的相關性。1以Hinton和Ackley兩位學者為代表的研究人員從不同領域以不同動機同時提出BM學習機。2Smolensky提出的RBM由一個可見神經元層和一個隱神經元層組成,由於隱層神經元之間沒有相互連接並且隱層神經元獨立於給定的訓練樣本,這使直接計算依賴數據的期望值變得容易,可見層神經元之間也沒有相互連接,通過從訓練樣本得到的隱層神經元狀態上執行馬爾可夫鏈抽樣過程,來估計獨立於數據的期望值,並行交替更新所有可見層神經元和隱層神經元的值。

J. bm演算法考研考不考

bm演算法考研考不考?考,北京航空航天大學人工智慧研究院考人工智慧基礎綜合試題含信號與系統、演算法設計與分析和機器學習三門課程的內容。

閱讀全文

與密碼學bm演算法相關的資料

熱點內容
javadoc導出 瀏覽:221
蘋果有沒有種子搜索器 瀏覽:17
u盤怎麼注冊文件夾 瀏覽:151
c盤可以刪除哪個文件夾 瀏覽:871
java手機版編程軟體 瀏覽:606
如何加速訪問國外伺服器的網站 瀏覽:194
體系文件優化應該哪個部門負責 瀏覽:893
球球app換成什麼了 瀏覽:974
flm文件名 瀏覽:48
dota怎麼調全屏win10 瀏覽:826
中國區縣資料庫 瀏覽:676
excel怎麼把文件導入到表格上 瀏覽:754
河北省委文件PDF 瀏覽:482
數據線怎麼變軟 瀏覽:949
java做app需要學什麼 瀏覽:736
圖元文件怎樣插入word 瀏覽:346
word表格消除粘貼的表格背景色 瀏覽:438
文件路徑怎麼改為絕對路徑 瀏覽:537
park視頻文件用什麼軟體打開 瀏覽:288
access資料庫怎麼設置數據表欄位 瀏覽:622

友情鏈接