加密

Awesome Cryptography Awesome

Awesome Cryptography

Build Status Join the chat at https://gitter.im/sobolevn/awesome-cryptography Open Source Helpers

Follow us on twitter

精选的加密资源和链接列表.


Theory

Algorithms

Symmetric encryption

  • 3DES -对称密钥块密码(或三重数据加密算法(TDEA或三重DEA)),该算法对每个数据块应用三次数据加密标准(DES)密码算法.
  • AES -对称密钥块密码算法和美国政府标准,用于安全和分类的数据加密和解密(也称为Rijndael).
  • [Blowfish](https://en.wikipedia.org/wiki/Blowfish_(cipher) )-对称密钥分组密码,由Bruce Schneier于1993年设计. 该设计的显着特征包括依赖于密钥的S盒和高度复杂的密钥时间表.

Asymmetric encryption

  • [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem) )-最早的实用公钥密码系统之一,被广泛用于安全数据传输. 在RSA中,这种不对称性是基于分解两个大质数乘积的实际困难,即分解问题.

Transform Encryption

  • Transform Encryption (aka Proxy Re-Encryption) -转换加密使用三个在数学上相关的密钥:一个用于将纯文本加密给接收者,第二个用于解密密文,而第三个将加密的密文转换成一个接收者,以便可以由其他接收者解密.

Hash functions

  • MD5 -广泛使用的哈希函数产生128位哈希值. MD5最初被设计为用作加密哈希函数,但已发现它具有广泛的漏洞. 它仍然可以用作校验和,以验证数据的完整性,但只能防止意外损坏.
  • SHA1 -由NSA设计的加密哈希函数. SHA-1产生一个160位的哈希值,称为消息摘要. SHA-1不再被认为能对付资金雄厚的对手.
  • SHA2 -由NSA设计的哈希函数集. SHA-256和SHA-512是分别用32位和64位字计算的新颖哈希函数. 它们使用不同的移位量和加性常数,但是它们的结构实际上是相同的,只是轮数不同.

Articles

Books

Courses

  • A Self-Study Course In Block-Cipher Cryptanalysis -本文试图以布鲁斯·施耐尔(Bruce Schneier)的方式组织现有的块密码密码分析文献,使学生可以学习密码分析技术和破解算法的方法.
  • Applied Cryptography -从使用信用卡付款到使用电话,日常生活中都有密码术. 了解有关制作和打破计算难题的所有知识.
  • Crypto Strikes Back! -这次演讲将涵盖广泛部署的系统中的加密漏洞,以及最小的监督如何导致灾难.
  • Cryptography -马里兰大学公园学院的密码学实用课程.
  • Cryptography - Stanford University -本课程说明密码基元的内部工作原理以及如何正确使用它们. 学生将学习如何推理密码结构的安全性,以及如何将此知识应用于实际应用.
  • Cryptography I -本课程首先详细讨论具有共享密钥的两个方如何在强大的对手窃听和篡改流量时安全地进行通信. 我们将检查许多已部署的协议并分析现有系统中的错误.
  • Cybrary Cryptography -本在线课程将介绍加密技术如何成为安全性的基石,以及如何通过使用加密技术(例如密码,公钥或私钥)来保护私钥或敏感信息免遭未经授权的访问.
  • Journey into cryptography -可汗学院的密码学课程.
  • Practical Aspects of Modern Cryptography -现代密码学的实践方面,2006年冬季,华盛顿大学CSE.
  • Theory and Practice of Cryptography -现代密码学简介,在实践中和在Google上使用密码学,安全性证明和安全性定义以及密码学中的特殊主题.

Other lists

Tools

Standalone

  • Bcrypt -跨平台文件加密实用程序.
  • blackbox -将机密安全存储在Git / Mercurial / Subversion中.
  • certbot -以前是Let's Encrypt Client,它是EFF的工具,用于从Let's Encrypt获取证书,并(可选)在服务器上自动启用HTTPS. 它也可以充当使用ACME协议的任何其他CA的客户端.
  • Coherence - Cryptographic server for modern web apps.
  • cryptomator -云中文件的多平台透明客户端加密.
  • gpg -完全免费实施OpenPGP标准. 它允许对数据和通信进行加密和签名,并具有通用的密钥管理系统. GnuPG是一种命令行工具,具有易于与其他应用程序集成的功能.
  • ironssh -使用sftp / scp端到端加密传输的文件,并选择性地与他人共享. 自动密钥管理可用于任何SSH服务器. 加密文件与gpg兼容.
  • Nipe -Nipe是使Tor Network成为默认网关的脚本.
  • sops -sops是加密文件的编辑器,它支持YAML,JSON和BINARY格式,并使用AWS KMS,GCP KMS,Azure Key Vault和PGP进行加密.
  • ves -通过云存储库进行端到端加密共享,在密钥丢失的情况下通过病毒式的朋友网络进行安全恢复.

Plugins

Git

  • git-crypt -git中的透明文件加密.
  • git-secret -Bash工具将您的私人数据存储在git存储库中.

Frameworks and Libs

C

  • crypto-algorithms -标准加密算法(如AES和SHA-1)的基本实现.
  • libgcrypt -作为GnuPG的独立模块开发的密码库.
  • libsodium -现代且易于使用的加密库.
  • libtomcrypt -非常全面,模块化和便携式的加密工具包.
  • libVES.c -通过云存储库进行端到端加密共享,在密钥丢失的情况下通过病毒式的朋友网络进行安全恢复.
  • milagro-crypto-c -小型,独立且快速的开源密码库. 它支持RSA,ECDH,ECIES,ECDSA,AES-GCM,SHA2,SHA3和基于配对的密码术.
  • monocypher -受libsodium和TweetNaCl启发的小型,便携式,易于使用的加密库.
  • NaCl -用于网络通信,加密,解密,签名等的高速库.
  • OpenSSL -TLS / SSL和加密库.
  • PolarSSL -PolarSSL使开发人员在其(嵌入式)产品中轻松包含加密和SSL / TLS功能,从而以最小的代码占用空间简化了该功能.
  • RHash -计算哈希和的强大工具.
  • themis - High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption). Ported on many languages and platforms, suitable for client-server infastructures.
  • tiny-AES128-C -C型小型便携式AES128.
  • wolfSSL -TLS / SSL的小型,快速,可移植实施,用于将嵌入式设备连接到云.
  • xxHash -极快的哈希算法.

C++

  • Botan -用C ++ 11编写的密码学库.
  • cryptopp -Crypto ++ Library是一个免费的C ++类密码方案库.
  • HElib -实现同态加密(HE)的软件库.
  • Nettle -低级密码库.
  • s2n -TLS / SSL协议的实现.

C-sharp

Clojure

  • buddy-core -加密API.
  • clj-crypto -弹力城堡的包装.
  • pandect -Clojure的快速,易于使用的消息摘要,校验和和HMAC库.

Common Lisp

Delphi

  • DelphiEncryptionCompendium -Delphi的密码库.
  • LockBox -LockBox 3是用于加密的Delphi库.
  • SynCrypto -快速的加密例程(散列和密码),实现AES,XOR,RC4,ADLER32,MD5,SHA1,SHA256算法,并针对速度进行了优化.
  • TForge -TForge是用Delphi编写的开源加密货币库,与FPC兼容.

Elixir

  • cipher -Elixir加密库可加密/解密任意二进制文件.
  • cloak -伪装使使用Ecto加密变得容易.
  • comeonin -Elixir的密码授权(bcrypt)库.
  • elixir-rsa -:public_key Elixir的加密包装.
  • elixir_tea -在Elixir中实施TEA.
  • ex_crypto -用于Erlang:crypto:public_key模块的Elixir包装器. 为许多加密功能提供合理的默认值,以使其更易于使用.
  • exgpg -使用Elixir的gpg.
  • pot -Erlang库,用于生成与Google Authenticator兼容的一次性密码.
  • siphash-elixir -SipHash哈希家族的Elixir实现.

Erlang

  • crypto -用于计算消息摘要的功能,以及用于加密和解密的功能.
  • public_key -提供处理公钥基础结构的功能.

Go

  • crypto -官方网站资源.
  • cryptoballot -加密安全的在线投票.
  • dedis/crypto -用于Go语言的高级密码库.
  • dkeyczar -将Google的Keyczar密码库移植到Go.
  • gocrypto -《 Goal实用密码》一书的示例源代码.
  • goThemis - Go wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Haskell

Haxe

JavaScript

  • asmCrypto -兼顾性能的流行加密实用程序的JavaScript实现.
  • bcrypt-nodejs -用于NodeJS的bcrypt的本机实现.
  • cifre -用于现代客户端JavaScript的快速加密工具包.
  • closure-library -Google的通用JavaScript库.
  • cryptico -使用RSA和AES的javascript的易于使用的加密系统.
  • crypto-js -加密标准的JavaScript库.
  • cryptojs -为NodeJS提供标准和安全的加密算法.
  • forge -TLS在Javascript和工具中的本地实现,以编写基于加密和网络繁重的Web应用程序.
  • IronNode -转换加密库,一种代理重新加密的变体,用于加密用户或组,并轻松将强大的数据控件添加到NodeJS应用程序.
  • IronWeb -转换加密库,一种代理重新加密的变体,用于轻松地在浏览器中安全地管理端到端加密.
  • javascript-crypto-library -JavaScript加密库为Web开发人员提供了广泛而有效的加密功能集.
  • js-nacl -纯Java高级API,用于Emscripten编译的libsodium例程.
  • jsencrypt -执行OpenSSL RSA加密,解密和密钥生成的Javascript库.
  • JShashes -适用于node.js和浏览器的快速且无依赖的加密哈希表库(支持MD5,SHA1,SHA256,SHA512,RIPEMD,HMAC).
  • jsrsasign -“ jsrsasign”(RSA-Sign JavaScript库)是一个免费的开源加密库,支持RSA / RSAPSS / ECDSA / DSA签名/验证.
  • jsThemis - Javascript wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • libsodium.js -使用方便的包装程序将libsodium编译为纯JavaScript.
  • libVES.js -通过云存储库进行端到端加密共享,在密钥丢失的情况下通过病毒式的朋友网络进行安全恢复.
    • milagro-crypto-js -MCJS是符合标准的JavaScript密码库,除了随机种子源外,没有任何外部依赖关系. 兼容nodejs和浏览器. 它支持RSA,ECDH,ECIES,ECDSA,AES-GCM,SHA2,SHA3,基于配对的密码术和New Hope.
  • node.bcrypt.js -用于NodeJS的bcrypt.
  • OpenPGP.js -JavaScript的OpenPGP实现.
  • PolyCrypt -WebCrypto API的纯JS实现.
  • rusha -高性能的纯JavaScript SHA1实现,适用于大型二进制数据,最高可达原始速度的一半.
  • sjcl -斯坦福Javascript加密库.
  • URSA -节点的RSA公钥/私钥OpenSSL绑定.

Java

  • Apache Shiro -执行身份验证,授权,加密和会话管理.
  • Bouncy Castle -通用加密库. JCA提供程序,从基本助手到PGP / SMIME操作的功能范围很广.
  • Flexiprovider -强大的Java密码体系结构工具包.
  • GDH -用于在Vert.x框架之上构建的多方通用Diffie-Hellman密钥交换Java库.
  • Google Keyczar -易于使用,但具有密钥版本控制的安全加密框架.
  • Google Tink -一个小型的加密库,提供安全,简单,敏捷和快速的方式来完成一些常见的加密任务.
  • Java Themis - Java/Android wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • jbcrypt -jBCrypt是OpenBSD Blowfish密码哈希的实现 algorithm.
  • Keycloak -用于现代应用程序和服务的开源身份和访问管理.
  • keywhiz -用于分发和管理机密的系统.
  • pac4j -安全引擎.
  • Project Kalium -通过libsodium的强大功能将Java绑定到Networking and Cryptography(NaCl)库.
  • scrypt -scrypt密钥派生功能的纯Java实现以及C实现的JNI接口,包括SSE2优化版本.
  • securitybuilder -用于JCA / JSSE对象的Fluent Builder API.

Julia

  • Crypto.jl -包含OpenSSL的库,但也具有纯Julia实现供参考.
  • MbedTLS.jl -围绕mbed TLS和加密C库的包装器.
  • Nettle.jl -朱莉娅包装荨麻加密哈希/ 提供MD5,SHA1,SHA2哈希和HMAC功能以及AES加密/解密的加密库.
  • SHA.jl -执行者,100%本机朱莉娅SHA1,SHA2- {224,256,384,512}实现.

Lua

Objective-C

  • CocoaSecurity -AES,MD5,SHA1,SHA224,SHA256,SHA384,SHA512,Base64,十六进制.
  • ObjC Themis - ObjC wrapper on Themis for iOS and MacOS. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • ObjectivePGP -ObjectivePGP是针对iOS和macOS的OpenPGP协议的实现. OpenPGP是使用最广泛的电子邮件加密标准.
  • RNCryptor -适用于iOS和Mac的CCCryptor(AES加密)包装.

PHP

  • halite -使用libsodium进行加密的简单库.
  • libsodium-laravel - Laravel Package Abstraction using libsodium.
  • PHP Encryption -在PHP中使用密钥或密码加密数据的库.
  • PHP Themis - PHP wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • TCrypto -TCrypto是一个简单灵活的PHP 5.3+内存中键值存储库.

Python

  • bcrypt -您的软件和服务器的现代密码哈希.
  • charm - Framework for rapidly prototyping cryptosystems.
  • Crypto-Vinaigrette -用于数字签名的抗量子非对称密钥生成工具.
  • cryptography -公开密码配方和原语的Python库.
  • cryptopy -加密算法和应用程序的纯python实现.
  • hashids - 实施 hashids 在Python中.
  • paramiko -SSHv2协议的Python实现,同时提供客户端和服务器功能.
  • Privy -一个简单,快速的库,可以正确地密码保护您的数据.
  • pycryptodome -低级加密原语的自包含Python包.
  • PyElliptic -Python OpenSSL包装器. 对于带有ECC,AES,HMAC和Blowfish的现代密码学.
  • pynacl -将Python绑定到网络和密码(NaCl)库.
  • pythemis - Python wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

R

  • rscrypt -一组用于加密密码功能的软件包.

Ruby

  • bcrypt-ruby -用于OpenBSD bcrypt()密码哈希算法的Ruby绑定,可让您轻松存储用户密码的安全哈希.
  • RbNaCl -Ruby绑定到网络和密码学(NaCl)库.
  • Ruby Themis - Ruby wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Rust

  • dalek cryptography -快速,安全的ECC,防弹等中级API.
  • octavo -高度模块化和可配置的哈希和加密库.
  • proteus -Rust中没有标题密钥的Axolotl协议实现.
  • recrypt -一个纯铁锈库,该库实现用于构建多跳代理重新加密方案的密码原语,称为“转换加密”.
  • ring -使用Rust&BoringSSL的加密原语进行安全,快速,小型加密.
  • rust-crypto -主要是各种加密算法的纯Rust实现.
  • rust-openssl -用于Rust的OpenSSL绑定.
  • rustls -Rustls是用Rust编写的新的现代TLS库.
  • sodiumoxide -氧化钠:Rust的快速密码库(与libsodium的绑定).
  • suruga -Rust中的TLS 1.2实施.
  • webpki -Rust中的Web PKI TLS X.509证书验证.

Scala

  • recrypt -转换Scala的加密库.
  • scrypto -Scala的加密原语.
  • tsec -类型安全,功能通用的安全和加密库.

Swift

  • CryptoSwift -以Swift编程语言实现的与Swift相关的加密功能和帮助程序.
  • IDZSwiftCommonCrypto -苹果的包装 CommonCrypto 用Swift编写的库
  • OpenSSL -适用于OS X和Linux的Swift OpenSSL.
  • SweetHMAC -微小且易于使用的Swift类使用HMAC算法对字符串进行加密.
  • Swift-Sodium -与Sodium库的Swift接口,用于iOS和OS X的常见加密操作.
  • SwiftSSL -Swift中的优雅加密工具包.
  • SwiftThemis - Swift wrapper on Themis for iOS and MacOS. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Resources

Blogs

Mailing lists

  • metzdowd.com -“密码学”是一种低噪声,经过审核的邮件列表,专门用于加密技术及其政治影响.
  • Modern Crypto -讨论现代密码实践的论坛.
  • randombit.net -密码学一般讨论列表,尤其是技术方面的列表.

Web-tools

  • Boxentriq -易于使用的工具,用于分析和加密最常见的密码,包括维格涅尔,博福特,凯撒凯撒,换位密码等.
  • Cryptolab -是一组与密码相关的工具.
  • CrypTool -经常介绍各种密码,加密方法和分析工具,并附带说明示例.
  • CyberChef -用于加密,编码,压缩和数据分析的网络应用.
  • factordb.com -Factordb.com是用于存储任意数量的已知分解的工具.
  • keybase.io -Keybase将您的身份映射到您的公共密钥,反之亦然.

Web-sites

  • Cryptography Stackexchange -密码学堆栈交换是软件开发人员,数学家和其他对密码学感兴趣的人的问答网站.
  • Cryptopals Crypto Challenges -一系列应用密码学挑战,从非常基本的挑战(例如十六进制到基础64个挑战)开始,逐渐将难度提高到抽象代数.
  • Garykessler Crypto -密码学概述.
  • IACR -国际密码学研究协会是一个非营利性的科学组织,其目的是进一步研究密码学及相关领域.
  • Learn Cryptography -致力于帮助人们了解他们日常使用的密码系统的方式和原因,而无需实现保护和保护其隐私的工作.
  • Subreddit of Cryptography -此subreddit用于围绕强密码学理论和实践的链接和讨论.
  • WebCryptoAPI -本规范描述了一个JavaScript API,用于在Web应用程序中执行基本的加密操作,例如哈希,签名生成和验证以及加密和解密.

Contributing

永远欢迎您的贡献! 请看看 contribution guidelines 第一.

License

的“ awesome-cryptography” @sobolevn

在法律允许的范围内,将CC0与 awesome-cryptography has waived all copyright and related or neighboring awesome-cryptography的权利.

您应该已经收到了CC0法律代码的副本以及此副本 工作. 如果没有,请参阅 https://creativecommons.org/publicdomain/zero/1.0/.