https://github.com/rx-j/ignite.cryptography
A simple class to symmetrically encrypt and decrypt data.
https://github.com/rx-j/ignite.cryptography
csharp-library encryption-decryption symmetric-encryption symmetrical-encryption
Last synced: 5 months ago
JSON representation
A simple class to symmetrically encrypt and decrypt data.
- Host: GitHub
- URL: https://github.com/rx-j/ignite.cryptography
- Owner: RX-J
- Created: 2024-07-30T22:45:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-01T20:41:51.000Z (over 1 year ago)
- Last Synced: 2025-03-13T12:14:49.443Z (10 months ago)
- Topics: csharp-library, encryption-decryption, symmetric-encryption, symmetrical-encryption
- Language: C#
- Homepage:
- Size: 4.88 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **The ```Ignite.Cryptography``` class requires the ```Ignite.Binary``` class from https://github.com/RX-J/Ignite.Binary/blob/main/Binary.cs**
## Important: The functions "Encrypt" and "Decrypt" both use the SHA256 algorithm to generate a key with 32 bytes from any password, if you store hashed passwords you should use a hashing algorithm other than SHA256 or use a salt! It should also be mentioned that the functionality has been kept compact and further security measures may need to be taken!
**The ```Encrypt``` function accepts any primitive data type and returns a ```byte[]``` or a ```string```, while the ```Decrypt``` function only accepts a ```byte[]``` or a ```string``` and returns any primitive data type. These primitive data types are:**
- ```byte```
- ```ushort```
- ```uint```
- ```ulong```
---
- ```sbyte```
- ```short```
- ```int```
- ```long```
---
- ```nint```
- ```nuint```
---
- ```float```
- ```double```
- ```decimal```
---
- ```bool```
- ```char```
- ```string```
---
**However, encryption and decryption only works reliably if the encrypted and decrypted data types are the same, e.g. a string decrypted as a string, or an int decrypted as an int.**
**To call the ```Encrypt``` function, you have these options:**
```cs
var encrypt = "Hello World!";
var encrypted = Cryptography.Encrypt("Password", encrypt); // Encrypts the string "Hello World!" using the password "Password" and returns a byte array
var encrypted = Cryptography.Encrypt("Password", encrypt); // Encrypts the string "Hello World!" using the password "Password" and returns a string
Cryptography.Encrypt("Password", encrypt, out byte[] encrypted); // Encrypts the string "Hello World!" using the password "Password" and outputs the result to a byte array
Cryptography.Encrypt("Password", encrypt, out string encrypted); // Encrypts the string "Hello World!" using the password "Password" and outputs the result to a string
var encrypted = new byte[100];
Cryptography.Encrypt(ref encrypted, "Password", encrypt); // Encrypts the string "Hello World!" using the password "Password" and stores the result in a predefined byte array
var encrypted = "";
Cryptography.Encrypt(ref encrypted, "Password", encrypt); // Encrypts the string "Hello World!" using the password "Password" and stores the result in a predefined string
```
**To call the ```Decrypt``` function, you have these options:**
```cs
var decrypt = Cryptography.Encrypt("Password", "Hello World!");
var decrypted = Cryptography.Decrypt("Password", decrypt); // Decrypts the data using the password "Password" and returns the result as the specified type
Cryptography.Decrypt("Password", decrypt, out TYPE decrypted); // Decrypts the data using the password "Password" and outputs the result to a variable of the specified type
TYPE decrypted;
Cryptography.Decrypt(ref decrypted, "Password", decrypt); // Decrypts the data using the password "Password" and stores the result in a predefined variable of the specified type
```