Class CryptoHelper
- Espace de noms
- SecureExchangesSDK.Helpers
- Assembly
- SecureExchangesSDK.NetCore.dll
This is the Helper to encrypt and decrypt the information with Secure Exchanges
public static class CryptoHelper
- Héritage
-
CryptoHelper
- Membres hérités
Methods
AlterBinary(string, byte[], int, int)
This will derive a byteArray with a Password and a number of iteration
public static byte[] AlterBinary(string password, byte[] original, int iteration, int maskLength = 16)
Paramètres
passwordstringPassword to use for derivation, longer, is better
originalbyte[]The original byte array to derive
iterationintthe number of iteration you want to derive. Higher is better, but will be more slow. 1000 should be use
maskLengthint
Retour
- byte[]
Exemples
Random rnd = new Random();
var iteration = rnd.Next(1000, 1200);
byte[] alterByteArray = CryptoHelper.AlterBinary("ThatIsAVeryComplexPswMmmNotSure!!!?", binary, iteration);
AlterGuid(string, Guid)
That is use to Derive a Guid with a password
public static Guid AlterGuid(string password, Guid original)
Paramètres
passwordstringPassword need to be use for derivation
originalGuidOriginal Guid need to be derived
Retour
Exemples
Guid newGuid = CryptoHelper.AlterGuid(password, MyGuid);
BytesXor(byte[], byte[])
Performs XOR operation between two byte arrays of equal length.
public static byte[] BytesXor(byte[] mask, byte[] source)
Paramètres
maskbyte[]The mask byte array to XOR with the source.
sourcebyte[]The source byte array to be XORed.
Retour
- byte[]
A new byte array containing the XOR result.
Exemples
byte[] mask = new byte[] { 0x0F, 0xF0, 0xAA };
byte[] source = new byte[] { 0x55, 0x55, 0x55 };
byte[] result = CryptoHelper.BytesXor(mask, source);
// result = { 0x5A, 0xA5, 0xFF }
Exceptions
- Exception
Thrown when the arrays have different lengths.
ClearRSAKeyStore(string)
public static bool ClearRSAKeyStore(string keyStoreName)
Paramètres
keyStoreNamestring
Retour
ConcatByteArray(params byte[][])
Use to merge multiple bytearray togheter
public static byte[] ConcatByteArray(params byte[][] arrays)
Paramètres
arraysbyte[][]Return a single bytes arrays
Retour
- byte[]
Exemples
byte[] singleByteArray = CryptoHelper.ConcatByteArray(byte[], byte[],byte[]);
CreateNewPrivateCertificate(int, bool)
Export a certificate with the private Key
public static string CreateNewPrivateCertificate(int keySize, bool exportPrivateKey = false)
Paramètres
Retour
CreateNewPrivateKey(int)
Create a new private RSA key xml format
public static string CreateNewPrivateKey(int keySize)
Paramètres
keySizeintKey size need to be use, 256, 512, 1024, 2048, 4096, 8192
Retour
- string
Return the xml private key
CreateRSAKeyStore(string, int)
Create an RSA key stored in the file system (cross-platform alternative to CspParameters MachineKeyStore). On Windows, falls back to CspParameters. On other platforms, uses file-based key storage.
public static string CreateRSAKeyStore(string keyStoreName, int keySize = 2048)
Paramètres
Retour
- string
The key container name
DecryptBinaryFromBytes(byte[], byte[], byte[], PaddingMode)
This method is use to decrypt binary AES
public static byte[] DecryptBinaryFromBytes(byte[] cipher, byte[] Key, byte[] IV, PaddingMode paddingMode = PaddingMode.PKCS7)
Paramètres
cipherbyte[]The binary to decrypt, canot be null
Keybyte[]The key use to decrypt the binary
IVbyte[]The iv use to decrypt the binary
paddingModePaddingModePadding mode use to decrypt. The default is PKCS7
Retour
- byte[]
The decrypted array
Exemples
byte[] unEncryptedByteArray = CryptoHelper.DecryptBinaryFromBytes(Convert.FromBase64String(Base64BinaryArray), Key, IV);
DecryptFile(string, string, byte[], byte[])
Decrypt file, destination will be override.
public static void DecryptFile(string sourceFilename, string destinationFilename, byte[] Key, byte[] IV)
Paramètres
DecryptRSAContent(string, byte[], bool)
Decrypt RSA crypted data with private key, and return a byte array
public static byte[] DecryptRSAContent(string privateKey, byte[] cryptedData, bool fOAEP)
Paramètres
privateKeystringThe xml private key need to be use to uncrypt the crypteddata
cryptedDatabyte[]Byte array of encrypted data
fOAEPbooltrue to perform direct System.Security.Cryptography.RSA encryption using OAEP padding; otherwise, false to use PCKS#1.5 padding
Retour
- byte[]
The byte array uncrypted of the byte array
DecryptRSAContentToString(string, byte[], bool)
Decrypt RSA crypted data with private key, and return a string
public static string DecryptRSAContentToString(string privateKey, byte[] cryptedData, bool fOAEP)
Paramètres
privateKeystringThe xml private key need to be use to uncrypt the crypteddata
cryptedDatabyte[]Byte array of encrypted data
fOAEPbooltrue to perform direct System.Security.Cryptography.RSA encryption using OAEP padding; otherwise, false to use PCKS#1.5 padding
Retour
- string
The string uncrypted of the byte array
Exemples
string decryptedString = CryptoHelper.DecryptRSAContentToString(privateKey, stringByteArray, true);
DecryptSecfFile(string, byte[], byte[])
Decrypt file, destination will be override.
public static bool DecryptSecfFile(string sourceFilename, byte[] Key, byte[] IV)
Paramètres
Retour
DecryptSecfFile(string, string, byte[], byte[])
Decrypt file, destination will be override.
public static bool DecryptSecfFile(string sourceFilename, string destinationDirectory, byte[] Key, byte[] IV)
Paramètres
Retour
DecryptStream(Stream, Stream, byte[], byte[], PaddingMode)
Decrypt Binaray with stream
public static void DecryptStream(Stream inputStream, Stream outputStream, byte[] Key, byte[] IV, PaddingMode paddingMode = PaddingMode.PKCS7)
Paramètres
inputStreamStreamThe caller must close the input stream after use
outputStreamStreamThe caller must close the output stream after use
Keybyte[]The key
IVbyte[]The IV
paddingModePaddingModeThe padding mode
Exceptions
DecryptStringFromBase64(string, byte[], byte[])
Decrypt base 64 string
public static string DecryptStringFromBase64(string b64, byte[] Key, byte[] IV)
Paramètres
b64stringThe encrypted string base64
Keybyte[]The key need to be use for decryption
IVbyte[]The iv need to be use for decryption
Retour
Exemples
string decryptedString = DecryptStringFromBytes("SSBuZWVkIHRvIGJlIGRlY3J5cHRlZD8gWW91IGFyZSByaWdodCwgdGhhdCB3YXMgbm90IHJlYWxseSBlbmNyeXB0ZWQhISA6LSk=", Key, IV);
DecryptStringFromBase64(string, string, string)
Decrypts a Base64 encoded encrypted string using Base64 encoded key and IV.
public static string DecryptStringFromBase64(string b64, string Base64Key, string Base64IV)
Paramètres
b64stringThe Base64 encoded encrypted string.
Base64KeystringThe Base64 encoded AES key.
Base64IVstringThe Base64 encoded AES initialization vector.
Retour
- string
The decrypted plain text string.
Exemples
string decrypted = CryptoHelper.DecryptStringFromBase64(encryptedB64, base64Key, base64IV);
DecryptStringFromBytes(byte[], byte[], byte[])
Decrypt binaryText
public static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
Paramètres
cipherTextbyte[]The encrypted binary data
Keybyte[]The key need to be used for decryption
IVbyte[]The iv need to be used for decryption
Retour
- string
return a string unencrypted of a string encrypted
Exemples
DecryptStringFromBytes(Convert.FromBase64String(b64), Key, IV);
EncryptBinary(byte[], byte[], byte[], PaddingMode)
Use to encrypt with AES a byte array
public static byte[] EncryptBinary(byte[] binary, byte[] Key, byte[] IV, PaddingMode paddingMode = PaddingMode.PKCS7)
Paramètres
binarybyte[]Binary need to be encrypted
Keybyte[]The key of the encryption
IVbyte[]The iv of the encryption
paddingModePaddingMode
Retour
- byte[]
Return the crypted bytes array
Exemples
byte[] cryptedBinary = CryptoHelper.EncryptBinary(Binary, Key, IV);
EncryptFile(string, string, byte[], byte[])
Use to encrypt file destination will be override
public static void EncryptFile(string sourceFilename, string destinationFilename, byte[] Key, byte[] IV)
Paramètres
EncryptRSAContent(string, byte[], bool)
Encrypt a byte array with a public key
public static byte[] EncryptRSAContent(string publicKey, byte[] content, bool fOAEP)
Paramètres
publicKeystringThe xml public key need to be use
contentbyte[]The string need to be encrypted
fOAEPbooltrue to perform direct System.Security.Cryptography.RSA encryption using OAEP padding; otherwise, false to use PCKS#1.5 padding
Retour
- byte[]
Byte array of the byte array, encrypted with the public key
Exemples
byte[] cryptedString = EncryptRSAContent(publicKey, contentBinary, true);
EncryptRSAContent(string, string)
Encrypt RSA content with xml public key
public static byte[] EncryptRSAContent(string publicKey, string content)
Paramètres
Retour
- byte[]
Encrypted string
Exemples
byte[] encryptedData = EncryptRSAContent(publicKey, content);
EncryptRSAContent(string, string, bool)
Encrypt a string with a public key
public static byte[] EncryptRSAContent(string publicKey, string content, bool fOAEP)
Paramètres
publicKeystringThe xml public key need to be use
contentstringThe string need to be encrypted System.Text.Encoding.Default
fOAEPbooltrue to perform direct System.Security.Cryptography.RSA encryption using OAEP padding; otherwise, false to use PCKS#1.5 padding
Retour
- byte[]
Byte array of the string, encrypted with the public key
Exemples
byte[] cryptedString = EncryptRSAContent(publicKey, contentString, true);
EncryptSecfFile(string, byte[], byte[])
Use to encrypt file destination will be override
public static bool EncryptSecfFile(string sourceFilename, byte[] Key, byte[] IV)
Paramètres
Retour
EncryptSecfFile(string, string, byte[], byte[])
Use to encrypt file destination will be override
public static bool EncryptSecfFile(string sourceFilename, string destinationDirectory, byte[] Key, byte[] IV)
Paramètres
Retour
EncryptStream(Stream, Stream, byte[], byte[], PaddingMode)
Encrypt binary by using stream to encrypt large file
public static void EncryptStream(Stream inputStream, Stream outputStream, byte[] Key, byte[] IV, PaddingMode paddingMode = PaddingMode.PKCS7)
Paramètres
inputStreamStreamThe input stream
outputStreamStreamThe outpout stream. ATTENTION THE CALLER MUST CLOSE THE STREAM
Keybyte[]The key
IVbyte[]The IV
paddingModePaddingModeThe padding mode
Exceptions
EncryptStringToB64(string, byte[], byte[])
Use to encrypt a string to UTF8 base 64
public static string EncryptStringToB64(string plainText, byte[] Key, byte[] IV)
Paramètres
Retour
- string
The base64 string
Exemples
string cryptedString = CryptoHelper.EncryptStringToB64("I need encryption for this string", KEY, IV);
EncryptStringToBytes(string, byte[], byte[])
Use to encrypt plainText UTF8 to byte array
public static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
Paramètres
Retour
- byte[]
A byte array encrypted. The plainText must be in UTF-8
Exemples
byte[] encrypted = CryptoHelper.EncryptStringToBytes(plainText, Key, IV);
EnncryptRSAContentToBase64String(string, string)
Encrypt with public key a string. Use RSA crypto provider
public static string EnncryptRSAContentToBase64String(string publicKey, string content)
Paramètres
Retour
- string
Base64 encrypted string
Exemples
string encryptedString = CryptoHelper.EnncryptRSAContentToBase64String(PublicKey, Content);
FillSecureRandomByteArray(byte[])
Fill a array with random strong value
public static void FillSecureRandomByteArray(byte[] data)
Paramètres
databyte[]Array to fill
GenerateAESKeys()
Generate a new AES keys
public static Keys GenerateAESKeys()
Retour
GenerateBase64KeyAndIV(out string, out string)
Generate 256 bits base 64 key and base 64 iv key with Aes.
public static void GenerateBase64KeyAndIV(out string b64Key, out string b64iv)
Paramètres
GenerateSecureRandomByteArray(int)
That method will return a array fill with SecureRandomValue
public static byte[] GenerateSecureRandomByteArray(int length)
Paramètres
lengthint
Retour
- byte[]
GetKeyFromSHA512(byte[])
From a SHA512 return a 32 bit keys
public static byte[] GetKeyFromSHA512(byte[] hash)
Paramètres
hashbyte[]
Retour
- byte[]
GetMD5Bytes(string)
Computes the MD5 hash of a UTF-8 encoded string and returns it as a byte array.
public static byte[] GetMD5Bytes(string plainText)
Paramètres
plainTextstringThe UTF-8 string to hash.
Retour
- byte[]
The MD5 hash as a byte array, or null if the input is null or empty.
Exemples
byte[] hashBytes = CryptoHelper.GetMD5Bytes("Hello World");
GetMD5HashOfBytes(byte[])
Return a MD5 Hexa string of the hash
public static string GetMD5HashOfBytes(byte[] b)
Paramètres
bbyte[]Source binary that need to get the Hash
Retour
- string
MD5 128 bit hexa hash
Exemples
string fileHash = CryptoHelper.GetMD5HashOfBytes(Binary);
GetMD5HashOfFile(string)
Return a MD5 hash of a file
public static string GetMD5HashOfFile(string filePath)
Paramètres
filePathstringPath to the file
Retour
- string
HEXA MD5 string file
Exemples
string hash = CryptoHelper.GetMD5HashOfFile(myfile.FileName);
GetMD5HashOfStream(Stream)
Get the Hexa MD5 string of a stream
public static string GetMD5HashOfStream(Stream stream)
Paramètres
streamStream
Retour
Exemples
using (var stream = new BufferedStream(File.OpenRead(filePath), 3145728))
{
return GetMD5HashOfStream(stream);
}
GetMD5HashOfString(string)
Return the MD5 hash of a string
public static string GetMD5HashOfString(string stringToHash)
Paramètres
stringToHashstringUTF-8 string
Retour
- string
HEXA string of the Hash
Exemples
string hash = CryptoHelper.GetMD5HashOfString(content);
GetPublicKeyFromPrivateKey(string)
Return the public RSA key of a private key. the public key will be in xml format
public static string GetPublicKeyFromPrivateKey(string privateKey)
Paramètres
privateKeystringXML private key to extract the public key
Retour
- string
The xml public key of the private key
GetPublicKeyFromPrivateXmlOrPEM(string)
public static RSAKeys GetPublicKeyFromPrivateXmlOrPEM(string privateKey)
Paramètres
privateKeystring
Retour
GetPublicKeySize(string)
Get the key size of a public key
public static int GetPublicKeySize(string publicKey)
Paramètres
publicKeystring
Retour
GetSHA256Bytes(byte[])
REturn the hash of a SHA256 of bytes
public static byte[] GetSHA256Bytes(byte[] bytes)
Paramètres
bytesbyte[]
Retour
- byte[]
GetSHA256Bytes(string)
Get the SHA 256 of UTF-8 string
public static byte[] GetSHA256Bytes(string plainText)
Paramètres
plainTextstring
Retour
- byte[]
GetSHA256HashOfBytes(byte[])
Get the HEX hash of bytes
public static string GetSHA256HashOfBytes(byte[] b)
Paramètres
bbyte[]
Retour
GetSHA256HashOfString(string)
Get the HEX hash of a string utf8
public static string GetSHA256HashOfString(string b)
Paramètres
bstring
Retour
GetSHA256OfFile(string)
Get the HEX hash of file
public static string GetSHA256OfFile(string filePath)
Paramètres
filePathstring
Retour
GetSHA256OfStream(Stream)
Get the HEX hash of stream
public static string GetSHA256OfStream(Stream stream)
Paramètres
streamStream
Retour
GetSHA512Bytes(byte[])
Return the hash of a SHA 512 of bytes
public static byte[] GetSHA512Bytes(byte[] bytes)
Paramètres
bytesbyte[]
Retour
- byte[]
GetSHA512Bytes(string)
Get SHA 512 of UTF-8 string
public static byte[] GetSHA512Bytes(string plainText)
Paramètres
plainTextstring
Retour
- byte[]
GetSHA512HashOfBytes(byte[])
Get the HEX hash of bytes
public static string GetSHA512HashOfBytes(byte[] b)
Paramètres
bbyte[]
Retour
GetSHA512HashOfString(string)
Get the HEX hash of a string utf8
public static string GetSHA512HashOfString(string b)
Paramètres
bstring
Retour
GetSHA512OfFile(string, bool)
Get the HEX hash of file
public static string GetSHA512OfFile(string filePath, bool fileOverOneGigabitHashIsSplit = true)
Paramètres
filePathstringThe file path of a file
fileOverOneGigabitHashIsSplitboolIf the file is over that 1G, then the hash calculation is optimised with combinaison of 100Mb hash
Retour
GetSHA512OfStream(Stream)
Get the HEX hash of stream
public static string GetSHA512OfStream(Stream stream)
Paramètres
streamStream
Retour
GetStrongKeyStoreNameFromAssemblyGuid()
public static string GetStrongKeyStoreNameFromAssemblyGuid()
Retour
HexToByteArray(string)
public static byte[] HexToByteArray(string hex)
Paramètres
hexstring
Retour
- byte[]
KeyAlreadyExistInMachineKeys(string)
public static bool KeyAlreadyExistInMachineKeys(string strongName)
Paramètres
strongNamestring
Retour
RSADencryptWhitKeyContainerFromMachineKeys(byte[], string)
public static byte[] RSADencryptWhitKeyContainerFromMachineKeys(byte[] encrBytes, string containerName)
Paramètres
Retour
- byte[]
RSADencryptWhitKeyContainerFromMachineKeysToString(byte[], string)
public static string RSADencryptWhitKeyContainerFromMachineKeysToString(byte[] encrBytes, string containerName)
Paramètres
Retour
RSAEncryptWhitKeyContainerMachineKeyStore(string, string)
public static byte[] RSAEncryptWhitKeyContainerMachineKeyStore(string message, string keyContainerName)
Paramètres
Retour
- byte[]
RSAEncryptWhitKeyContainerMachineKeyStoreToBase64(string, string)
public static string RSAEncryptWhitKeyContainerMachineKeyStoreToBase64(string message, string keyContainerName)
Paramètres
Retour
SignDataWithPrivateKey(string, byte[])
Get the signature of a message signed with a private key. Always uses SHA512.
public static byte[] SignDataWithPrivateKey(string privateKey, byte[] cryptedData)
Paramètres
Retour
- byte[]
SignDataWithPrivateKey(string, string)
return a base64 signature of the hash
public static string SignDataWithPrivateKey(string privateKey, string clearText)
Paramètres
Retour
TransformXmlKeyToPEM(string)
That will transform a xml key to certificate
public static string TransformXmlKeyToPEM(string xmlKey)
Paramètres
xmlKeystringIf we get the private key, the PEM will contain the private key if not only the public key
Retour
VerifySignature(string, byte[], byte[], string)
Vérifie la signature d'un échange clé publique privé
public static bool VerifySignature(string xmlPublicKey, byte[] signature, byte[] clearHashData, string hashAlgo = "SHA512")
Paramètres
xmlPublicKeystringLa clé publique associer à la clé privé
signaturebyte[]La signature en bytes
clearHashDatabyte[]Le hash des données signers en bytes
hashAlgostringl'alrorithme utiliser
Retour
VerifySignature(string, string, string, string)
Vérifie la signature d'un échange clé publique privé
public static bool VerifySignature(string xmlPublicKey, string base64Signature, string clearBase64HashData, string hashAlgo = "SHA512")
Paramètres
xmlPublicKeystringLa clé publique associer à la clé privé
base64SignaturestringLa signature fait à partir de la clé privé en base 64
clearBase64HashDatastringLe hash du message qui à été signer en base 64
hashAlgostringl'algoritme utiliser