All Projects → bitcoin-core → ctaes

bitcoin-core / ctaes

Licence: MIT License
Simple constant-time AES implementation

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to ctaes

symmecrypt
Golang symmetric encryption library
Stars: ✭ 85 (+37.1%)
Mutual labels:  aes
browserify-cipher
No description or website provided.
Stars: ✭ 15 (-75.81%)
Mutual labels:  aes
CryptoHDL
A list of VHDL codes implementing cryptographic algorithms
Stars: ✭ 14 (-77.42%)
Mutual labels:  aes
libVES.c
VESvault End-to-End Encryption API: Encrypt Everything Without Fear of Losing the Key
Stars: ✭ 28 (-54.84%)
Mutual labels:  aes
crypthash-net
CryptHash.NET is a .NET multi-target library to encrypt/decrypt/hash/encode/decode strings and files, with an optional .NET Core multiplatform console utility.
Stars: ✭ 33 (-46.77%)
Mutual labels:  aes
FlashPaper
One-time encrypted password/secret sharing
Stars: ✭ 85 (+37.1%)
Mutual labels:  aes
rvkrypto-fips
FIPS and higher-level algorithm tests for RISC-V Crypto Extension
Stars: ✭ 18 (-70.97%)
Mutual labels:  aes
interesting-keys
Interesting collected (leaked) encryption/decryption keys
Stars: ✭ 33 (-46.77%)
Mutual labels:  aes
dingtalk-encrypt
dingTalk encrypt Node Version. 钉钉的非官方nodejs版AES加解密库 sdk
Stars: ✭ 16 (-74.19%)
Mutual labels:  aes
Python-File-Encryptor
Encrypt and Decrypt files using Python (AES CBC MODE)
Stars: ✭ 51 (-17.74%)
Mutual labels:  aes
jscrypto
Crypto library for Node/ES6/Typescript/Browser.
Stars: ✭ 20 (-67.74%)
Mutual labels:  aes
public
util toolkit for go.golang 通用函数包
Stars: ✭ 135 (+117.74%)
Mutual labels:  aes
OormiPass
Free open source cross platform password manager
Stars: ✭ 50 (-19.35%)
Mutual labels:  aes
AES-Encryption-Classes
AES encryption in Python, PHP, C#, Java, C++, F#, Ruby, Scala, Node.js
Stars: ✭ 106 (+70.97%)
Mutual labels:  aes
AESCipher-Java
AES encryption working between Objective-C and Java.
Stars: ✭ 88 (+41.94%)
Mutual labels:  aes
HiFramework.Unity
Based on component to manage project's core logic and module used in unity3d
Stars: ✭ 22 (-64.52%)
Mutual labels:  aes
WhiteBoxAES
C/C++ whitebox implementation of AES
Stars: ✭ 66 (+6.45%)
Mutual labels:  aes
AES
AES for microcontrollers (Arduino & Raspberry pi)
Stars: ✭ 116 (+87.1%)
Mutual labels:  aes
wxbizdatacrypt
微信小程序加密数据解密算法Go版
Stars: ✭ 132 (+112.9%)
Mutual labels:  aes
TripleSecManaged
A C# port of the TripleSec encryption scheme created by Chris Coyne, Maxwell Krohn, and Filippo Valsorda
Stars: ✭ 18 (-70.97%)
Mutual labels:  aes

ctaes

Simple C module for constant-time AES encryption and decryption.

Features:

  • Simple, pure C code without any dependencies.
  • No tables or data-dependent branches whatsoever, but using bit sliced approach from https://eprint.iacr.org/2009/129.pdf.
  • Very small object code: slightly over 4k of executable code when compiled with -Os.
  • Slower than implementations based on precomputed tables or specialized instructions, but can do ~15 MB/s on modern CPUs.

Performance

Compiled with GCC 5.3.1 with -O3, on an Intel(R) Core(TM) i7-4800MQ CPU, numbers in CPU cycles:

Algorithm Key schedule Encryption per byte Decryption per byte
AES-128 2.8k 154 161
AES-192 3.1k 169 181
AES-256 4.0k 191 203

Build steps

Object code:

$ gcc -O3 ctaes.c -c -o ctaes.o

Tests:

$ gcc -O3 ctaes.c test.c -o test

Benchmark:

$ gcc -O3 ctaes.c bench.c -o bench

Review

Results of a formal review of the code can be found in http://bitcoin.sipa.be/ctaes/review.zip

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].