Upgrade to Pro — share decks privately, control downloads, hide ads and more …

加密解密那点事 Introduction To Cryptography

Avatar for Letian Zhang Letian Zhang
February 01, 2016

加密解密那点事 Introduction To Cryptography

Avatar for Letian Zhang

Letian Zhang

February 01, 2016

Other Decks in Programming

Transcript

  1. 䦅⌮ 澭䣚⫈㯆㸑澮 䫣㐻 澭ợ⽱垭Ự㐻澮 Ḭ埇 澭Ḭ埇ㄒ䘡㩥䖆⋓弃伇澮 ⌨媦 澭ᶍ⌐䣲僬ⳳ㮣㘋὜澮 㘼⫈⼩ ⪎㑶⼩

    媦嫃 ᴏ⋱⌨媦⼩ ⫻䣲⫈䜃 控⫈䜃 ≗⌓㑥ℙ⃿㑲 㲊⽱媦嫃䜃 㑲⩙䪀⌏ ợ⽱⪋ㅂ晤ᴶ䖆⤃促 ⋙⤃促䖆䅻⼩ 䐪㙧ⶖ⫻䖆⫈䜃ㆂ㘱
  2. ⸄ㄘ廒䪙 A B A⊕B A⊕B⊕B ❎ ❎ ❎ ❎ ❎

    ✅ ✅ ❎ ✅ ❎ ✅ ✅ ✅ ✅ ❎ ✅
  3. ᴂ㨣⼩⫈䜃㘮 01000010 01100001 01101001 01100100 01110101 B a i d

    u ⾲俒 㺙ꛬ 10000011 00111110 11110010 11010001 00011100 XOR 11000001 01011111 10011011 10110101 01101001 㺙俒
  4. 控↢⫈澱䣃控壥⫈ 㲊⽱⋓弃伇#NKEG 㲊⽱㊧㐸伇$QD $QD䖆控 $QD䖆䣃控 ť$QD䐡ㄒ僬ⳳ䖆⫈控⫻ Ŧ$QD⬈控⋓弃䷛#NKEG $QD䖆控 㔐㒉 ⫈㒉

    ↢⫈ $QD䖆 控 ŧ#NKEG䐪$QD䖆 控⫻㲊⽱廝坎↢⫈ Ũ#NKEG⬈⫈㒉⋓弃䷛$QD ⫈㒉 ⫈㒉 㔐㒉 壥⫈ $QD䖆 䣃控 ũ$QD䐪䣃控⫻⫈㒉 廝坎壥⫈
  5. 45#䪙㯗 ✴ ↢⫈澿㔐㒉 mod  ✴ 壥⫈澿⫈㒉 mod  ✴

    控澿㑲⎎㑲 ✴ 䣃控澿㑲⎎㑲
  6. ᴯ擶ᶼ㐽⃽
 /CPKPVJGOKFFNGCVVCEM 㲊⽱⋓弃伇#NKEG 㲊⽱㊧㐸伇$QD $QD䖆控 $QD䖆䣃控 ť$QD䐡ㄒ僬ⳳ䖆⫈控⫻ Ŧ$QD⬈控⋓弃䷛#NKEG $QD䖆控 㔐㒉

    ⫈㒉 ↢⫈ $QD䖆 控 ŧ#NKEG䐪$QD䖆 控⫻㲊⽱廝坎↢⫈ Ũ#NKEG⬈⫈㒉⋓弃䷛$QD ⫈㒉 ⫈㒉 㔐㒉 壥⫈ $QD䖆 䣃控 ũ$QD䐪䣃控⫻⫈㒉 廝坎壥⫈ ͞ ∝ Ϊ
  7. ẁ䐪控⫈䜃廝坎↢⫈ 㲊⽱⋓弃伇#NKEG 㲊⽱㊧㐸伇$QD $QD䖆控 $QD䖆䣃控 ť$QD䐡ㄒ僬ⳳ䖆⫈控⫻ Ŧ$QD⬈控⋓弃䷛#NKEG $QD䖆控 㔐㒉 ⫈㒉

    ↢⫈ $QD䖆 控 ŧ#NKEG䐪$QD䖆 控⫻㲊⽱廝坎↢⫈ Ũ#NKEG⬈⫈㒉⋓弃䷛$QD ⫈㒉 ⫈㒉 㔐㒉 壥⫈ $QD䖆 䣃控 ũ$QD䐪䣃控⫻⫈㒉 廝坎壥⫈
  8. ẁ䐪控⫈䜃廝坎㑲⩙䪀⌏ 㲊⽱⋓弃伇#NKEG 㲊⽱㊧㐸伇$QD #NKEG䖆 控 #NKEG䖆 䣃控 ť#NKEG䐡ㄒ僬ⳳ䖆⫈控⫻ Ŧ#NKEG⬈控⋓弃䷛$QD #NKEG䖆控

    㲊⽱ 䪀⌏ ↢⫈ #NKEG䖆 䣃控 ŧ#NKEG䐪僬ⳳ䖆䣃控 廝坎↢⫈澭䐡ㄒ䪀⌏澮 Ũ#NKEG⬈㲊⽱⎎䪀 ⌏⋓弃䷛$QD 㲊⽱ 䪀⌏ 榎嫃 壥⫈ #NKEG䖆 控 ũ$QD䐪控榎嫃䪀⌏ 䪀⌏ 㲊⽱
  9. ẁ䐪控⫈䜃澰≗⌓㑥ℙ⃿㑲 廝坎㑲⩙䪀⌏ 㲊⽱⋓弃伇#NKEG 㲊⽱㊧㐸伇$QD #NKEG䖆 控 #NKEG䖆 䣃控 ť#NKEG䐡ㄒ僬ⳳ䖆⫈控⫻ Ŧ#NKEG⬈控⋓弃䷛$QD

    #NKEG䖆控 ŧ#NKEG䐪僬ⳳ䖆䣃控 廝坎↢⫈澭䐡ㄒ䪀⌏澮 Ũ#NKEG⬈㲊⽱⎎䪀 ⌏⋓弃䷛$QD 䪀⌏ 榎嫃 壥⫈ #NKEG䖆 控 ũ$QD䐪控榎嫃䪀⌏ 㲊⽱ 䪀⌏ 㲊⽱ 㲊⽱ 㑥ℙἾ ≗⌓㑥ℙ⃿㑲 #NKEG䖆 䣃控 ↢⫈ 䪀⌏ 壥⫈⌐䖆 㑥ℙἾ ≗⌓㑥ℙ⃿㑲 媣䪙⺙Ⅎ 䖆㑥ℙἾ
  10. 㲊⽱媦嫃䜃XU㑲⩙䪀⌏ 㲊⽱媦嫃䜃 㑲⩙䪀⌏ ⋓弃伇 䐪⁳ᶭ⫈控媣䪙/#% 䐪䣃控䐡ㄒ䪀⌏ ㊧⋙伇 䐪⁳ᶭ⫈控媣䪙/#% 䐪控榎嫃䪀⌏ ⫈控℈⋓擰枚

    ⩚☪ ᴏ⩚☪澱Ṉ㔱控昂境⋨ ⠘媦嫃 ⪎㑶⼩ ✅ ✅ 媦嫃 ✅澭᷇敒弜ợ⋎㒻澮 ✅澭弄䐪ᶐ᷽ṗ䨮ᴋ㒻澮 攴㩤⌨媦 ❎ ✅
  11. ䷁⼩⌎ṛ㯗 X n+1 = aX n + c ( )

    mod m ҂ေ൐Ⴈ https://commons.wikimedia.org/wiki/File:Linear_congruential_generator_visualisation.svg
  12. 2*2 ✴ 1RGP55. ✴ ⫻䣲↢⫈澿openssl_encrypt, openssl_decrypt ✴ 控㳹⌊↢⫈澿openssl_seal, openssl_open ✴

    㑲⩙䪀⌏澿openssl_sign, openssl_verify ✴ ≗⌓㑥ℙ⃿㑲澿openssl_digest ✴ Ḭ斑㘼㑲䐡ㄒ╪澿openssl_random_pseudo_bytes ✴ *CUJ ✴ ≗⌓㑥ℙ⃿㑲澿hash ✴ 㲊⽱媦嫃䜃澿hash_hmac ✴ ⫈䜃㑥ℙ澿2CUUYQTF*CUJKPI ✴ Ḭ斑㘼㑲䐡ㄒ╪澿%5240)
  13. 0QFGLUCrypto/QFWNG ✴ ⫻䣲⫈䜃澿Cipher, Decipher ✴ 控↢⫈澿publicEncrypt, privateDecrypt ✴ ≗⌓㑥ℙ⃿㑲澿Hash ✴

    㲊⽱媦嫃䜃澿Hmac ✴ 㑲⩙䪀⌏澿Sign, Verify ✴ Ḭ斑㘼㑲䐡ㄒ╪澿randomBytes