Versleutel en decodeer gegevens met C # en SQL Server

Ik wil een ASP.Net-applicatie maken met C# en ik zal een gegevens opslaan op SQL Server 2005, deze gegevens worden gecodeerd Ik wil een algoritme vinden om een ​​gegevens te coderen met C# en het te decoderen op SQL-dienstzijde en ik wil om een ​​aantal gegevens te versleutelen met SQL en te decoderen met C# wat is het beste algoritme hiervoor ??

private byte[] key = {
    0x61,
    0x72,
    0x84,
    0x7a,
    0x24,
    0x43,
    0x65,
    0x64,
    0x73,
    0x55,
    0x64,
    0x75,
    0x66

};



const string PASSWORD = "TestPassword";
public object Encrypt(string sPlainText)
{



    byte[] aPlainBytes = null;

    PasswordDeriveBytes aPassword = default(PasswordDeriveBytes);



    aPlainBytes = System.Text.Encoding.Unicode.GetBytes(sPlainText);

    aPassword = new PasswordDeriveBytes(PASSWORD, key);

    byte[] sEncryptedData = Encrypt(aPlainBytes, aPassword.GetBytes(32), aPassword.GetBytes(16));

    //' MessageBox.Show(Convert.ToString(sEncryptedData.ToString))

    return Convert.ToBase64String(sEncryptedData);



}



private byte[] Encrypt(byte[] sPlainData, byte[] aKey, byte[] aIV)
{



    MemoryStream oMemoryStream = new MemoryStream();



    Rijndael oRijndael = Rijndael.Create();

    oRijndael.Key = aKey;



    oRijndael.IV = aIV;



    CryptoStream oCryptoStream = new CryptoStream(oMemoryStream, oRijndael.CreateEncryptor(), CryptoStreamMode.Write);

    oCryptoStream.Write(sPlainData, 0, sPlainData.Length);

    oCryptoStream.Close();

    byte[] aEncryptedData = oMemoryStream.ToArray();




    return aEncryptedData;



}
0
waar ben je van plan de sleutel te verbergen?
toegevoegd de auteur John Hartsock, de bron

2 antwoord

C#: System.Security.Cryptography

SQL Server: Sql Server Encryption

C# Example from here:

private static void EncryptData(String inName, String outName, byte[] tdesKey, byte[] tdesIV)
{    
    //Create the file streams to handle the input and output files.
    FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
    FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(0);

    //Create variables to help with read and write.
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen = 0;              //This is the total number of bytes written.
    long totlen = fin.Length;    //This is the total length of the input file.
    int len;                     //This is the number of bytes to be written at a time.

    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();          
    CryptoStream encStream = new CryptoStream(fout, tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write);

    Console.WriteLine("Encrypting...");

    //Read from the input file, then encrypt and write to the output file.
    while(rdlen < totlen)
    {
        len = fin.Read(bin, 0, 100);
        encStream.Write(bin, 0, len);
        rdlen = rdlen + len;
        Console.WriteLine("{0} bytes processed", rdlen);
    }

    encStream.Close();                     
}

SQL Server Example from here:

USE AdventureWorks2008R2;
GO

--If there is no master key, create one now. 
IF NOT EXISTS 
    (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
    CREATE MASTER KEY ENCRYPTION BY 
    PASSWORD = '23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj'
GO

CREATE CERTIFICATE HumanResources037
   WITH SUBJECT = 'Employee Social Security Numbers';
GO

CREATE SYMMETRIC KEY SSN_Key_01
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE HumanResources037;
GO

USE [AdventureWorks2008R2];
GO

-- Create a column in which to store the encrypted data.
ALTER TABLE HumanResources.Employee
    ADD EncryptedNationalIDNumber varbinary(128); 
GO

-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;

-- Encrypt the value in column NationalIDNumber with symmetric 
-- key SSN_Key_01. Save the result in column EncryptedNationalIDNumber.
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO

-- Verify the encryption.
-- First, open the symmetric key with which to decrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;
GO

-- Now list the original ID, the encrypted ID, and the 
-- decrypted ciphertext. If the decryption worked, the original
-- and the decrypted ID will match.
SELECT NationalIDNumber, EncryptedNationalIDNumber 
    AS 'Encrypted ID Number',
    CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber)) 
    AS 'Decrypted ID Number'
    FROM HumanResources.Employee;
GO
5
toegevoegd
Ik heb enkele voorbeelden van beide toegevoegd met links, maar voorbeelden zijn redelijk eenvoudig te vinden door te zoeken.
toegevoegd de auteur CAbbott, de bron
Kunt u mij een eenvoudig voorbeeld geven?
toegevoegd de auteur AD AD, de bron
I een code om een ​​string te versleutelen en ik wil de eqwivilent op SQL, kan je me helpen? en hoe kan ik het voor je verzenden?
toegevoegd de auteur AD AD, de bron
Ik heb het bericht bewerkt en bevat nu mijn coderingscode
toegevoegd de auteur AD AD, de bron

zowel C# als SQL kunnen drievoudige DES-versleutelingsmethoden gebruiken, maar ik zou waarschijnlijk één locatie kiezen om beide te doen. tenzij je beide nodig hebt om het om de een of andere reden voor te bereiden. zie dit voorbeeld voor het gebruik van codering op SQL-niveau

0
toegevoegd