crypto 0.2.18
A D Library of encrypto, decrypto(3DES, AES, TEA, RSA...), encode, hash, and message digital signatures.
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
A D Library of encryption, decryption, encode, hash, and message digital signatures.
The same functional and fully compatible C++ project: https://github.com/shove70/shove.c
AES:
import crypto.aes;
import crypto.padding;
string key = "12341234123412341234123412341234";
ubyte[] message = cast(ubyte[])"123412341234123412341234123412341";
ubyte[] iv = [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 1, 2, 3, 4];
ubyte[] buffer = AESUtils.encrypt!AES128(message, key, iv, PaddingMode.PKCS5);
buffer = AESUtils.decrypt!AES128(buffer, key, iv, PaddingMode.PKCS5);
assert(message == buffer);
Blake2b:
import crypto.blake2.blake2b;
import crypto.hex;
import std.base64;
import std.digest.crc;
ubyte[] hash;
ubyte[] hashResult = hexBytes("28248967dc89fdbdaea74cb99ceec5cd4e06547f095b83d31e9a580bb739a539c077a295ef76b0ef5e8b83abe7a5f82d48639566bececfa6b80c9ec4a6a80889");
assert(blake2b!B512(hash, cast(ubyte[])"Blake2b") == 0);
assert(hash == hashResult);
assert(toHexString!(LetterCase.lower)(hash) == "28248967dc89fdbdaea74cb99ceec5cd4e06547f095b83d31e9a580bb739a539c077a295ef76b0ef5e8b83abe7a5f82d48639566bececfa6b80c9ec4a6a80889");
assert(Base64.encode(hash) == "KCSJZ9yJ/b2up0y5nO7FzU4GVH8JW4PTHppYC7c5pTnAd6KV73aw716Lg6vnpfgtSGOVZr7Oz6a4DJ7EpqgIiQ==");
XTEA:
import crypto.tea.xtea;
import crypto.padding;
int[4] key = [1, 2, 3, 4];
int rounds = 64;
ubyte[] message = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
ubyte[] buffer = Xtea.encrypt(message, key, rounds, PaddingMode.PKCS5);
buffer = Xtea.decrypt(buffer, key, rounds, PaddingMode.PKCS5);
assert(message == buffer);
RSA:
import crypto.rsa;
RSAKeyPair keyPair = RSA.generateKeyPair(1024);
writeln(keyPair.privateKey);
writeln(keyPair.publicKey);
string data = "Data that needs to be encrypted";
ubyte[] en = RSA.encrypt(keyPair.privateKey, cast(ubyte[])data);
ubyte[] de = RSA.decrypt(keyPair.publicKey, en);
writeln(cast(string)de);
assert(cast(string)de == data);
Thanks
- @n8sh
- @Boris-Barboris
- @DarkRiDDeR
- @Cédric Picard
Other
For more examples, see unittest, Thanks.
- 0.2.18 released a year ago
- shove70/crypto
- MIT
- Copyright © 2017-2020, Shove, DarkRiDDeR, n8sh
- Authors:
- Dependencies:
- intel-intrinsics
- Versions:
-
0.2.18 2023-Sep-05 0.2.17 2022-Jan-25 0.2.16 2020-Dec-03 0.2.15 2020-Oct-14 0.2.14 2020-Sep-01 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
7 downloads this month
-
11857 downloads total
-
- Score:
- 2.3
- Short URL:
- crypto.dub.pm